Home
        super-extended-basic..
         Contents
1.                                                                                      MMUEN  When this bit is set the MMU registers are enabled  If this  bit is clear  the MMU registers are inoperable and the 64K   which makes up the logical address space is  the contiguous  segment from  70000   S7FFFF    IEN  When this bit is set  the GIME chip s IRQ Interrupt structure  is enabled  If the bit is clear  the old CoCo 2 PIA IRQ  interrupt structure is used    FEN  When this bit is set  the GIME chip s FIRQ Interrupt structure  is enabled  If the bit is clear  the old CoCo 2 PIA FIRQ  interrupt structure is used    MC3  When this bit is set  the RAM which occupies the CPU s address  range of SFEOO SFEFF will always be taken from  7FE00   7FEFF   If this bit is clear and the MMUEN bit is set the RAM in the  CPU s address range of SFEOO SFEFF will be taken from the  block as specified by the MMU register controlling logical  block 7    MC2  Spare Chip Select  SCS  control  if 0  then the SCS line  to  the expansion slot  will only be active in the  FF50 SFF5F  range  If this bit is 1  then the SCS line will be active in  the SFF40 SFF5F range        1  ROM map control   MCO  ROM map control   MC1 MC ROM configuration     X 16K internal  16K external  1    32K internal  1 1 32K external  except interrupt vectors   FF91 Initialization register 1 INIT1  Bit 7 Unused  Bit 6 Unused  Bit 5 TINS Timer input select  1   70 nsec       63 5 usec  Bit 4 Unused  Bit 3 Unused  Bit 2 Unused  B
2.                                                                  Figure 6 Vertical offset registers  non CoCo compatible mode     Setting the screen display address while in the CoCo compatible mode is  different than the non CoCo compatible mode  The address is set using a combination    19    SUPER EXTENDED BASIC UNRAVELLED II SUPER HIGH RESOLUTION ORIGIN  SPECTRAL ASSOC  GRAPHICS REVISED 12 26 99 WALTER K ZYDHEK    of the vertical offset registers and the Synchronous Address Multiplexer s  SAM   display offset register  located from  FFC6 to  FFD3  see Figure 8   The vertical  offset registers are used to position the video display within the 512K address  Space as shown in Figure 7  The three high order bits of  FF9D  YH  YH2  determine  in which 64K segment of the physical address space the start of the video display  will be found  By setting the SAM display offset register  you can specify a 512   byte offset that will be added to the segment boundary as defined by YHO   YH2  The  bottom five bits of             YL  YL5  allow you to further refine the start of the  video display to any eight byte boundary  The video starting address may be  determined by the following formula  start   YH 64K SAM 512 YL 8 where SAM  represents the value of the SAM display offset register           YH2   YH1   YHO X X X X X X X VL5   VL4   VL3   VL2   VL1   VLO  Vertical offset 1  SFF9D  Vertical offset 0  SFF9E                                                                       Figur
3.                      E642    E644  E645  EQ4B        40      4        53      56  EQ5A      5    EQ5E      60      63  Eg65    E6  20  8E  86  C6  A7  5A  26  8    31    6    6    7  5A  26  39    03  7    03  7      55  16  16  16  16  16  16    00  EQ  EQ  EQ  EQ  EQ  EQ  El  7E  0g  0g  0g    34  18  8    96  27  8    81  27  8    20    cc  0g  00    4C  93  00    4C  03  00    34  10  8E  18  96  81  23  8E  80  A6    AG  15   8  12    B  80    FB  Cg  8D  AG  AG  80    F9    02  02  02  02  02  02      6  19  4D  97  B5  Al  FF  19        00  00  00    32  21  EQ  E7  5C  EQ  01  55  EQ  50    00  00    05  00    15  00    32  21  EQ  8    E6  02  03  EQ  01    6    09  00 BA    90    97    OF  OF  18  12  09  09    1F       32    44    00 00 OF         12 00 00 D8    12 00 00 D8    1F AD  70  EQ 6C    APPENDIX B  DISASSEMBLY OF SUPER EXTENDED BASIC 1 1    LDB   Y  GET THE NUMBER OF BYTES TO PATCH  BRA LC349  LC334 LDX  PATCH30 POINT X TO DISK BASIC 1 1 KEYBOARD PATCH   C8B4   LDA 9512 OP CODE OF A NOP INSTRUCTION  LDB  11 PATCH 11 BYTES  LC33B STA X STORE A NOP  DECB DECREMENT COUNTER  BNE LC33B LOOP UNTIL DONE  LDX            29 POINT X TO DISK BASIC 1 1 PATCH ADDRESS  30009   LEAY  LC351 PC POINT Y TO THE PATCH DATA  LDB   Y  GET THE NUMBER OF BYTES TO PATCH  LC349 LDA   Y  GET A PATCH BYTE  STA X STORE THE PATCH BYTE  DECB DECREMENT THE PATCH COUNTER  BNE LC349 LOOP UNTIL DONE  RTS      DISK BASIC ROM PATCHES  COPYRIGHT MESSAGE   LC351 FCB 503    LC352 JMP ALINK29  E
4.                Won m m H ul    TIMER    Color Computer compatible   MMU enabled   GIME chip IRQ output enabled  GIME chip FIRQ output enabled  RAM at XFEXX is constant  standard SCS   ROM map control   ROM map control    HORIZONTAL BORDER    VERTICAL BORDER    SERIAL DATA  KEYBOARD  CARTRIDGE    BLOCKS  30  33    ARE THE HI RES GRAPHICS SCREEN    HI RES GRAPHICS SCREEN  HI RES GRAPHICS SCREEN  HI RES GRAPHICS SCREEN    Al    SUPER EXTENDED BASIC UNRAVELLED II      C               QQ                                                                                                0000    0000  0001  0002  0003  0004  0005  0006  0007  0008  0009  000    000    0000  GOOF  0011    0013  0017  0019  001    0010  00      0021  0023  0025  0027  0029  002    0020  002    0031  0033  0035  0037  0039  003    0030  003      0040  0041  0042  0043  0044    0045  0046  0047  0048    004      0034  0035  0036  0037    0038  0039  003A  003    003    0030  003    003      0000                   BLOCK 6 4 EQU 534  BLOCK 6 5 EQU  35  BLOCK 6 6 EQU  36  BLOCK 6 7 EQU  37  BLOCK7 0  EQU  38  BLOCK7 1 EQU  39  BLOCK7 2 EQU  3A  BLOCK7 3 EQU  3B  BLOCK7 4 EQU 536  BLOCK7 5 EQU  3D  BLOCK7 6 EQU   3E  BLOCK7 7 EQU   3F  ORG 0  SETDP 0  ENDFLG RMB  CHARAC RMB  ENDCUR RMB  TMPLOC RMB  IFCTR RMB  DIMFLG RMB  VALTYP RMB  GARBFL RMB  ARYDIS RMB  INPFLG RMB  RELFLG RMB  TEMPPT RMB 2  LASTPT RMB 2  TEMPTR RMB 2  TMPTR1 RMB 2     FLOATING POINT ACCUMULATOR  2  FPA2 RMB 4  BOTSTK RMB 2  TXTTAB RMB 2  VART
5.             E2   BCS     LE19A   CMPA   F8   BLS     LEI9E  LE19A       COMVEC 23   LE19E SUBA     2   LDX     4COMDIS20   JMP     LADD4  ALINK5          8552   BCS     LEIAE   CMPB   5A   BLS     LE182  LEIAE JMP      COMVEC 28   LE1B2 5088 4552   CMPB  2 2       B8    COMPARE TO THE FIRST ENHANCED BASIC FUNCTION TOKEN  BRANCH IF LESS THAN ENHANCED TOKEN   COMPARE TO THE HIGHEST FUNCTION TOKEN   BRANCH IF ENHANCED TOKEN   JUMP TO DISK BASIC S FUNCTION HANDLER   SUBTRACT OUT THE NON ENHANCED BASIC TOKENS   CHECK FOR LPEEK  BUTTON  HPOINT    SUPER EXTENDED BASIC UNRAVELLED II    0769  0770  0771  0772  0773  0774  0775  0776  0777  0778  0779  0780  0781  0782  0783  0784  0785  0786  0787  0788  0789  0790  0791  0792  0793  0794  0795  0796  0797  0798  0799  0800  0801  0802  0803  0804  0805  0806  0807  0808  0809  0810  0811  0812  0813  0814  0815  0816  0817  0818  0819  0820  0821  0822  0823  0824  0825  0826  0827  0828  0829  0830  0831  0832  0833  0834  0835  0836  0837  0838  0839  0840  0841  0842  0843  0844  0845  0846  0847  0848  0849  0850  0851  0852  0853  0854  0855  0856  0857  0858  0859  0860  0861  0862  0863  0864      1  6  E1B8  E1BA  E1BD  E1BF  E1C2      1  5  E1CA    100    101    107    108    100    1  1    1  7  E1ED  E1F3            E1F9  E1FD  E261  E206  E20C  E20F  E212  E218  E21D  E221  E227  E22C  E22F  E232    E236  E238  E23A  E23C  E23E  E240  E242  E244  E246  E248  E24A  E24C  E24E  E250  E252  E254  E256  E258  E25A  E25C  E25E
6.       ED  39    8D  6E    E8  E8    CE  96  80  48        39    80  02    Cg            34  D6  96  3D  c3  1F  DC  44  56  44  56  44  56  30  96  84  CE  A6  35    34  D6  96    84  94  89    84  B5  04  EQ  84  EQ  DB  DB    E7  0g    B7  8    Cg  02  BF    22  E6  02  05  01  03  02  93  02  2B  A4    GA  C4    20  20    E7  E6  01    C6    40  01    30    OF    44  B9          20  01  BD    8B  BE  07  E7  C6   4    44    9          B2  BD    34  00 BD    3F    7F  2B    E8 3F E7 FF    DE    20 10 08 04    9c 03    0g    F1    LE792 LDB  PSHS  TFR  COMA  ANDA  ANDB  PSHS  ORA  STA  SUBA  ORA  STA  RTS  JSR  LDU    LE7AA  LE7AD      THE  NORMALIZATION     APPENDIX B  DISASSEMBLY OF SUPER EXTENDED BASIC 1 1    A B        ALLCOL  B   St             sor  CHGFLG  CHGFLG    LE7B2   HORBEG    ORIGIN  SPECTRAL ASSOC  REVISED 12 26 1999 WALTER K ZYDHEK    GET THE BYTE WHICH CONTAINS THE PIXEL   AND SAVE IT ON THE STACK   COPY THE MASK TO ACCB   INVERT THE MASK   ERASE OLD PIXEL DATA   FORCE THE PIXEL MASK TO BE THE CORRECT COLOR  AND SAVE THE  COLORED  DATA ON THE STACK  REPLACE THE  ERASED  PIXEL WITH THE NEW COLOR DATA  AND SAVE IT IN THE SCREEN MEMORY            0 IF OLD AND NEW PIXELS WERE IDENTICAL  SET CHGFLG  lt  gt    IF THE PIXEL WAS CHANGED  SAVE THE  CHANGED  STATUS    EVALUATE TWO EXPRESSIONS  POINT U TO EVALUATED COORDINATES  STORAGE LOCATIONS      9320  ROUTINE FROM EXTENDED BASIC WENT HERE   IT IS NOT NEEDED      IN ENHANCED BASIC SO IT WAS REPLACED WITH AN RTS    
7.     25  08  28    80    5  FF  00  FE  20  00  20  FE  BF  00    00  A7  F5  FE  E6  FF  74  64  3A    7A  92  7C  F7  B9    69  72  74  6F  00    00  00  00  00    40  FF  41  F7  B9  10  8D  12  86  84  8D    80    06    03  Al    F2    04  00    00  09  00  08  06  00    02  03    09      B    EF    9A  9A  08    9    00  00    99    8F    08    78  9      01  9      63  65  65  72    00  00  00  00  57    1    9      FF    FF    6D    4D    B4    72  20  6D  70    00  00  00      1            6F  53  73  2E    0g  0g  0g    77  79  20    0g  0g  00    LF66D STD  BSR  LBSR  LBSR  RTS      80 COLUMNS     0180 LDA  STA  LBSR  LDA  LDB  STD  LDD  BRA    LF68C LDX  LBRN  STX  LDA  LDB   LF69B STD  CMPX  BCS  LDX  CLRA  STA  STA  RTS    H DISPEN  LF68C  LF778  SETTEXT      02   HRWIDTH   LF772   380    ROWMAX   H COLUMN  SHRSCREEN  80  RONMAX 2  LF66D    SHRESSCRN  RAMLINK  H CRSLOC  SPACE  H CRSATT  X    H DISPEN  LF69B   HRESSCRN    H CURSX  H CURSY      CLS PATCH ENTERED FROM  8C4C    ALINK23 PULS  LBRN  BEQ  JSR  TSTB  BEQ  CMPB  BHI  DECB  LEAY  LDA  STA  LBSR  STB  LDA  LBSR  LDX  STX  BSR  LF6DC LBSR  RTS  LF6Eg LBSR  BSR  BRA  LF6E7 CLR  LDA  STA  BSR  CMPB  BEQ    BSR  BSR  BSR  LDX  JMP    cc  RAMLINK  LF6Eg  EVALEXPB    LF6Eg  3908  LF6E7    IM  PALET  PC  B Y       BORDER  LF766  H CRSATT  HSPACE  LF772   HRESSCRN  H CRSLOC  LF69B  LF778    LF772  LF68C  LF6DC  H CRSATT  IM PALET  V BORDER  LF766   100  LF738    LF772  LF68C  LF778   MICROMS 1  STRINOUT      MICROWA
8.     FB  18  EA  C6  EE  EQ  EQ    80  03  C4    CF  41  CF  93  01          EQ  EQ  B4  EF  F6  07          10    D6  C4  80    CF   4    80    C7  C4  84  80    BE   4  84    DB    CD  01    01    DA  D5    45    FF  97    01    DF  FF  97  4A    FD    LEE6D    CMPA  BEQ  LDB  CMPA  BNE  LDB  TFR  ANDA  STA  ANDB  STB  JSR  STD  JSR  ADDD  STD      CONVERT THE    LEE92    LEE96    LEEA7    LEEAB      HGET S  LEECO    LEEC7    LEED3    LEEEO  LEEE2  LEEE3  LEEES  LEEE6  LEEE8  LEEE9  LEEEB  LEEEC  LEEEE    LDA  CMPA  BEQ  CMPA  BNE  LSR  ROR  LSR  ROR  LSR  ROR  LDD  ADDD  STD  JSR  LDY  LDB  PSHS  JSR  DECB  BNE  PULS  JSR  DEC  BNE  JSR  JSR  RTS    BYTE  LDA  BSR  STA  RTS  LDU  LEAU  STU  CMPU  BHI  RTS  LDS  JSR  JSR  JMP    FDB  FCB  FDB  FCB  FDB  FCB  FDB  FCB  FDB  FCB      03  LEE6D    FC    02  LEE6D    FE          HORBEG 1  HORBEG 1  HOREND 1  HOREND 1  LE9DB  HOREND  LE9CD    1  VEREND    HORIZONTAL DIFFERENCE  IN PIXELS     HRMODE  3502  LEE96    03  LEE92  HOREND  HOREND 1  HOREND  HOREND 1  HOREND  HOREND 1  HOREND   1  HOREND  HCALPOS  VD5  HOREND 1  X   zY    LEEAB   X   LEA45  VEREND 1  LEEA7  5        5    SETMMU    MOVEMENT ROUTINE  X    LEEC7    U            501 0                  LEED3     TMPSTACK 2  5        5    SETMMU  ILLFUNC    LEEEF   BD  LEEF6   BE  LEFQ7   B1  LEEFE  5  0  LEF19   A8      HPUT S MOVEMENT ROUTINES    PSET  DEFAULT ROUTINE     LEEEF      PRESET  LEEF6      AND  LEEFE      OR  LEFQ7    BSR  LDA  STA  RTS    BSR  LDA  COMA  STA  RT
9.    206 LA  D6 JSR LA199 BLINK THE CURSOR  A0D9 JSR  gt KEYIN GET A KEY  A0DC BEQ LA0D6 KEEP GOING UNTIL A KEY IS DEPRESSED                             LA1B9 REMOVE THE CURSOR FROM THE SCREEN AND RETURN  ABF3                   LAC73 GO TO MAIN LOOP OF BASIC  ABFC LAGFC JSR L8C28 PREPARE TO USE THE CARTRIDGE ROM  FORCE THE ROM MODE    THIS ROUTINE GETS A KEYSTRIKE FROM THE KEYBOARD IF A KEY    IS DOWN  IT RETURNS A ZERO TRUE IF THERE WAS NO KEY DOWN     1  1 LA1C1 JMP KEYIN  A1C4 RTS   THESE RTS s ARE WHERE A CHECK WAS PERFORMED TO  A1C5 RTS   SEE IF A KEY WAS DOWN  IF THE CHECK REVEALED THAT  A1C6 RTS   A KEY WAS NOT DOWN  THEN THE KEYIN  A1C7 RTS   ROUTINE WAS NOT CHECKED  WHICH MAKES BASIC RUN  A1C8 RTS   FASTER  A1C9 RTS  A1CA RTS    INTERRUPT VECTORS  BFF0 FDB  A681 RESERVED FOR FUTURE USE  FILLED WITH GARBAGE BYTES   BFF2 FDB INT SWI3 SOFTWARE INTERRUPT 3   FEEE   BFF4 FDB INT SWI2 SOFTWARE INTERRUPT 2   FEF1   BFF6 FDB INT FIRQ FAST INTERRUPT REQUEST   FEF4   BFF8 FDB INT IRQ INTERRUPT REQUEST   FEF7   BFFA FDB INT SWI SOFTWARE INTERRUPT   FEFA   BFFC FDB INT NMI NON MASKABLE INTERRUPT   FEFD   BFFE FDB INT RESET RESET BUTTON   8C1B           12    SUPER EXTENDED BASIC UNRAVELLED II APPENDIX J ORIGIN SPECTRAL ASSOC  SUPER EXTENDED BASIC CHARACTER SET REVISED 12 26 1999 WALTER K ZYDHEK    HI RESOLUTION CHARACTER SET    Listed below is the character set available when in the high resolution text  modes  WIDTH 40 80   The character set is repeated for character values  80  
10.    21    SUPER EXTENDED BASIC UNRAVELLED II     FFD0 1   FFCE F   FFCC D   FFCA B   FFC8 9   FFC6 7   FFC4 5   FFC2 3   FFC0 1    SUPER HIGH RESOLUTION ORIGIN  SPECTRAL ASSOC  GRAPHICS REVISED 12 26 99 WALTER K ZYDHEK  display offset register  display offset register  display offset register  display offset register  display offset register  display offset register  LSB   display mode control register  MSB   display mode control register  display mode control register  LSB     Figure 8   CoCo 3 SAM registers    22    SUPER EXTENDED BASIC UNRAVELLED II COLORS AND PALETTES ORIGIN  SPECTRAL ASSOC  REVISED 12 26 99 WALTER K ZYDHEK    COLORS AND PALETTES    There        64 color codes available on the Color Computer 3  numbered from      63  By storing these values in the correct palette register  which well discuss in  a bit   these colors are displayed on the screen  There are two color sets used on  the Color Computer 3  one used for televisions and composite monitors  and the  other used for RGB monitors  These color sets are derived in different ways  and we  will discuss each of those separately     Colors on an RGB Monitor    The term RGB is derived from the three color signals sent to the monitor  one  each for red  green  and blue  These colors correspond to the three primary colors  that make up each pixel on the screen  The Color Computer produces a signal for  each of these three colors  which may be any one of four strengths  numbered from  0 3  When any one signal is
11.    ADDRESS                  1        2  FFB3  FFB4  FFB5  FFB6  FFB7  FFB8  FFB9  FFBA  FFBB  FFBC  FFBD  FFBE  FFBF    1    1    APPENDIX A  MEMORY MAP    PA    THIRD PIXEL            SECOND PIXEL    PA    FIRST PIXEL    P  0  0  0  0  1  1  1  1  0  0  0  0  1  1  1  1        1  0  0                      BORDER REGISTER    BLUE LS  GREEN L  RED LSB  BLUE MS  GREEN M  RED MSB    RESERVED    B  SB    B  SB    ORIGIN SPECTRAL ASSOC  REVISED 12 26 1999 WALTER K ZYDHEK    PAG       VERTICAL SCROLL REGISTER    VERTICAL OFFSET 1 REGISTER    VERTICAL OFFSET    REGISTER      IN COCO MODE  Y9 Y15 ARE NOT EFFECTIVE  AND ARE CONTROLLED BY  SAM BITS        6  ALSO IN COCO MODE  Y16 Y18 SHOULD BE 1  ALL OTHERS 0    H OFSETO    BITE                              X1    1    HORIZONTAL OFFSET    REGISTER    HORIZONTAL OFFSET ADDRESS  HORIZONTAL OFFSET ADDRESS    A13    SUPER EXTENDED BASIC UNRAVELLED II    0963  0964  0965  0966  0967  0968  0969  0970  0971  0972  0973  0974  0975  0976                                                                          m     O O O      tO           tO  O  O LO LO LO LO tO  tO LO    tO          tO wo                                                       tO             tO  O                                         OO OO             O OO    O   CO                                O   O1  gt                  vO         O  O1 4 C  rS        Qo                                     O  C1   C  rS             FFAG    FFB      FFC0    FFC0  FFC1  FFC2  FFC3  FFC4 
12.    BRANCH IF NOT AT THE END OF THE HI RES TEXT SCREEN  RESET THE COLUMN NUMBER TO ZERO   RESTORE THE CHARACTER POINTER   GET THE CURSOR CHARACTER   GET THE CURSOR ATTRIBUTES RAM IMAGE   FORCE THE UNDERLINE ATTRIBUTE   SAVE THE NEW CURSOR CHARACTER   SAVE THE NEW CURSOR POINTER    CHECK THE DEVICE NUMBER   BRANCH IF NOT THE SCREEN   CHECK THE HI RES TEXT MODE   BRANCH IF A HI RES TEXT MODE IS SET   SET UP THE PRINT PARAMETERS   RE ENTER THE MAIN STREAM OF CODE   B95F    PUT THE HI RES TEXT SCREEN INTO THE LOGICAL ADDRESS SPACE  CHECK THE CURSOR S X COORDINATE   SAVE THE ZERO FLAG   RESTORE THE NORMAL BASIC PROGRAM BLOCK TO LOGICAL BLOCK 1  RESTORE THE ZERO FLAG   BRANCH IF THE CURSOR IS NOT AT THE START OF THE LINE   B958     CHECK THE HI RES TEXT MODE    HP  ERROR IF THE HI RES TEXT MODE IS NOT SET  MOVE THE CURSOR TO THE PROPER PRINT POSITION  RE ENTER THE MAIN STREAM OF CODE   B905     HP  ERROR    SUPER EXTENDED BASIC UNRAVELLED II    3553  3554  3555  3556  3557  3558  3559  3568  3561  3562  3563  3564  3565  3566  3567  3568  3569  3578  3571  3572  3573  3574  3575  3576  3577  3578  3579  3580  3581  3582  3583  3584  3585  3586  3587  3588  3589  35968  3591  3592  3593  3594  3595  3596  3597  3598  3599  3600  3601  3602  3603  3604  3605  3606  3607  3608  3609  3610  3611  3612  3613  3614  3615  3616  3617  3618  3619  3620  3621  3622  3623  3624  3625  3626  3627  3628  3629  3630  3631  3632  3633  3634  3635  3636  3637  3638  3639  3640  3641  3642  3643  3
13.    C12B    12    C132  C134  C137  C13A  C13C    C13F  C142  C146  C148  C14B    14      152  C154  C157  C15A  C15C    15      161  C163  C165  C167  C169  C16B  C16D    16    C178  C172    43  84  27  31  26  16  86  B7    B6  81  26  96  81  26  9E  A6  81  18  7F  96  81  26  9E  A6  81  18  86  B7  8E  18  17    31  A6  34  AE  E6  A6  A7  5A  26  35  4A  26  7F  86  B7  FC    81  26  C1  26    8    18  8D  17  7F  86  B7    8E  10  80  17  31  8E  C6  17  7F  6D  27  8    C6  30    6  8A  A7  30  5A  26  C6  8      40  07  3F  F2  21  CA  FF    FE  55  28  7  55  OA  72  84  12  27  FF  71  55  OA  72  84  12  27  38  FF              00    8D  AG  02    1              80    F9  02          FF  C8  FF          44  10  4B  gc                76  01  FF  CA  FF    FE  8E  62  00  8D  FE  13  00  FF    4  22        03  01  84  20  84  09    F5  02  EQ    2E    90    ED    00 AE  AG    00 9B  AG  00    80 00          01 52    DE    90  00    00       00          DE    00       00    93  02   A          7    DF    70    APPENDIX B ORIGIN SPECTRAL ASSOC  DISASSEMBLY OF SUPER EXTENDED BASIC 1 1 REVISED 12 26 1999 WALTER K ZYDHEK    COMA   ANDA   48 KEEP ONLY ROW 6   BEQ LCOC2 BRANCH IF KEY NOT DOWN   LEAY   01 Y LET S CHECK FOT EH ALT KEY NOW   BNE LC B1   LBRA            GO DISPLAY THE HI RES PICTURE IF CONTROL AND ALT KEYS ARE DOWN    LCOC2 LDA      COCO MMUEN MC3 MC1 TURN OFF THE NORMAL SCS  THE EXTERNAL DISK CONTROLLER  STA            MAY NOT BE ACCESSED NOW    THE FOLLOWING
14.    LFA4BF  BSR     NEGACCD  LFABF JSR LEBCB  TFR U D  LSRA  RORB  LSRA  RORB  TST  5   BPL     LF4DO    NEGATE ACCD  NEGACCD NEGA  NEGB  SBCA 4900  LF4D8 RTS  LFAD  TFR X D  RTS    GET DRAW SCALE   BRANCH IF ZERO  DEFAULT TO FULL SCALE    CLEAR THE MS BYTE   SWAP DIFFERENCE AND SCALE FACTOR   SAVE MS BYTE OF DIFFERENCE ON STACK  SIGN INFORMATION   BRANCH IF POSITIVE DIFFERENCE   FORCE THE DIFFERENCE TO BE A POSITIVE VALUE   MULT DIFFERENCE BY SCALE FACTOR   SAVE 2 MS BYTES IN ACCD    DIVIDE ACCD BY 2  DO IT AGAIN  EACH SCALE INCREMENT IS 1 4 FULL SCALE    CHECK SIGN OF ORIGINAL DIFFERENCE  RETURN IF IT MAS POSITIVE    NEGATE ACCD    TRANSFER UNCHANGED DIFFERENCE TO ACCD      MOVE THE DRAW POSITION   ADD THE ORTHOGONAL DIFFERENCES IN ACCD  HORIZONTAL     AND X  VERTICAL  TO THE CURRENT POSITION  DRAW A LINE AFTER THE MOVE    LF4D4 PSHS  BSR  PULS  PSHS  BSR  PULS  LDY  PSHS  TST  BEQ  EXG  BSR  DEC  BRA  PULS    LF4E5    LF4F1           LF4B2   X          LF4B2   X   ANGLE   Y    5  LF4F1  X D  NEGACCD   5  LF4E5   Y    B32    SAVE THE HORIZONTAL DIFFERENCE   APPLY SCALE FACTOR TO VERTICAL   GET HORIZONTAL DIFFERENCE   SAVE THE VERTICAL DIFFERENCE   APPLY THE SCALE FACTOR TO HORIZONTAL  GET THE VERTICAL DIFFERENCE   GET DRAW ANGLE AND SCALE   SAVE THEM ON THE STACK   CHECK DRAW ANGLE   BRANCH IF NO ANGLE   SWAP HORIZONTAL AND VERTICAL DIFFERENCES  NEGATE ACCD   DECR ANGLE   CHECK ANGLE AGAIN   PULL ANGLE AND SCALE OFF OF THE STACK    SUPER EXTENDED BASIC UNRAVELLED II    3073 
15.    SET THE GRAPHICS MODE TO NORMAL LO RES COCO ALPHA  0064 C077 86 02 LDA     2   0065  079 A7 84 STA     SET THE DA OUTPUT TO ZERO AND THE RS232 OUTPUT TO MARKING  0066 CO7B 86 FF LDA     Z FF   0067    INITIALIZE            0068   070      FF 00 LDX  PIA POINT X TO PIA 0   0069     C080 6F 01 CLR 501    CLEAR CONTROL REGISTER A  ENABLE BOTH DATA DIRECTION REGISTERS  0070   C082 6F 03 CLR 503    CLEAR CONTROL REGISTER B  ENABLE BOTH DATA DIRECTION REGISTERS  0071   084 6F 84 CLR     SET PORT A TO ALL INPUTS   0072   C086 A7 02 STA 502    SET PORT B TO ALL OUTPUTS   0073 C088 E7 01 STB 501    SET PORT TO PERIPHERAL REGISTER  CA1 DISABLED  CA2 ENABLED AS INPUT  0074  C08A E7 03 STB  03 X SET PORT TO PERIPHERAL REGISTER  CB1 DISABLED  CB2 ENABLED AS INPUT  0075   INITIALIZE THE SAM MIRROR REGISTERS IN THE CUSTOM CHIP   0076   08   C6 BC LDB  12 RESET 12 SAM IMAGE REGISTERS   0077   0     CE FF CB LDU  SAM POINT U TO THE SAM REGISTERS   0078 C091 A7 61 1  091 5      Utt CLEAR THE BIT AND SKIP TO THE NEXT BIT   0079  093 5A DECB BUMP COUNTER   0080 C894 26 FB BNE 1  091 LOOP UNTIL ALL BITS CLEARED   0081  096 B7 FF C9 STA SAM 9 SET THE VIDEO DISPLAY PAGE TO 4400   0082  099 1F 9B TFR B DP SET THE DIRECT PAGE TO PAGE ZERO   0083   09   6F 02 CLR 502    STROBE ALL KEYBOARD COLUMNS  USELESS INSTRUCTION  0084  090 A7 5D STA   03 U SAMREG 21  FFD5   SELECT RAM PAGE 1  USELESS IN THE COCO 3  0085 CO9F      FF 00 LDX  PIA POINT X TO PIA 0  WHY   IT S ALREADY POINTED THERE  0086       2 
16.    THESE  LC30D    LC322    APPENDIX B    DISASSEMBLY OF SUPER EXTENDED BASIC 1 1             JMP     ALINK12 E288  13   REMOVE ONE CR FROM ONE OF EX BAS COPYRIGHT MESSAGE  FDB                813A  FCB  01   FCB  00   14   ADD ONTO END OF EX BAS GRAPHICS INITIALIZATION ROUTINE  FDB     PATCH14 9703  FCB  03   JMP     ALINK14 E389  15   BREAK CHECK   FDB           15 ADF    FCB 504   JMP     ALINK15 E429  NOP   16   CHECK FOR BREAK KEY ON BASIC S LINE INPUT  FDB             6 A3C2  FCB 504   JMP     ALINK16 E413  NOP   17   PATCH INPUT TO RESPOND TO ON BRK   FDB           17 1 BO3C 1  FCB  02   FDB     ALINK17 E532  18    ON  COMMAND   FDB             8 AF42  FCB  03   JMP     ALINK18       4  19   END       NEW  COMMAND   FDB           19 AD3F  FCB 504   JMP     ALINK19   400           20   ERROR SERVICING ROUTINE   FDB           20     46  FCB  03   JMP ALINK20 E470  21   BASIC S MAIN LOOP IN THE DIRECT MODE   FDB           21 AC73  FCB  03   JMP     ALINK21 E502  22   FDB  PATCH22 A30A  FCB  03   JMP     PATCH22A 8037  23    CLS  ROUTINE   FDB           23 A910  FCB  03   JMP PATCH23A 8C46  24   CURSOR BLINK   FDB             4   1  1  FCB  08   JMP     LAGCE                                                        25   PRINT   COMMAND   FDB           25   902  FCB  03   JMP     ALINK25 F8C3  26   FDB           26 B95C  FCB  03   JMP     ALINK26 F8A3  27   GET A BASIC INPUT LINE   FDB           27 A38D  FCB  03   JMP     ALINK27 F757  DATA ARE THE NAMES OF THE AUTHORS IN COMP
17.   1  the ASCII codes from 0 31  will contain lower case characters  Appendix I contains a complete chart of theses  codes  If bit 5   0  the text screen will be black characters on a green  background  If bit 5   1  the text screen will be green characters on a black  background     SUPER EXTENDED BASIC UNRAVELLED II COLOR COMPUTER 3 ORIGIN  SPECTRAL ASSOC  HARDWARE DIFFERENCES REVISED 12 26 99 WALTER K ZYDHEK    Peculiarities and Compromises    During the design of the Color Computer 3  Tandy was particularly careful to  insure  as much as possible  that all software written for the original Color  Computers would work on the Color Computer 3  This involved some peculiarities and  compromises    Tandy s primary method of insuring this compatibility was to have a mode of  operation similar to the original Color Computer  This mode is referred to as the  CoCo compatible Mode  and is active when bit 7 of  FF90 is set  In this mode the  primary difference is that the SAM registers  used to set graphics modes and screen  addresses in the original Color Computer  are enabled  When this bit is cleared   you are in the CoCo 3 mode and the video display and vertical offset modes of the  SAM registers are disabled    The original Color Computer was limited to 64K  and Basic was designed to  operate within that constraint  Since making Basic work with more than 64K would  have required major changes in Basic  which would mean software would be  incompatible   Basic still is limited to 
18.   1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016    EAEB  EAEC  EAED  EAEF  EAF2  EAF4  EAF5  EAF9  EAFB  EAFD  EAFF  EB  1  EB03  EBO5  EBO7  EBO9  EBOB  EBOD  EBOF      10      11      13      15      17      19                          20      22      24      26      28      2        2        2    EB2F      30      32      34      36      38  EB3B  EB3D  EB3F  EB41  EB43    EB45  EB48  EB4A  EB4C  EB4E  EB51    EB53  EB54  EB56  EB58  EB59  EB5A    EB5C                  60      63      66      68  EB6A  EB6C  EB6E  EB71  EB73  EB76  EB78    EB7B  EB7C  EB7E      80  EB83  EB86  EB88  EB8A  EB8C  EB8F  EB91  EB93  EB95  EB96    44  56  9E  BD  1    40  10  07  1    97  A6  81  25  81  24  DC  93  24  4    5F  20  DC  D3  25  10  25  DC  DD  A6  81  25  DC  93  24  4    5F  20  DC  D3  25  10  25  DC  DD  00  26    17  35  04  25  10  27    5C  C1  26  4C  5F  84    7E  39    CE  8E  AF  96  81  2E  8E  AF  8E  AF  7E    5F  9D  27  BD  BD  96  8B  97  BD  C4  1    C4  44  44    01        20    26  C5  30  C6  E4  02  BE  06  BA  CB  C3  11    00  CB  C3  05  93  02  03  C3  E4  04  BA  cD  C5  11    00  CD  C5  05  93  02  05  C5  D8  03          06  08  05  93  0      08  04    07            00  02   4    6  02  05  01   4  00  42  E7    A5  1  B2  B1  4      6  4    B7  3F  98  97    CB    C9 51    D3    D5    06    09    B3    D3  7F    3F    BF    B      6D  41            APPENDIX B ORIGIN SPECTRAL ASSOC  DISAS
19.   23  24  9F  21  AB  9F    E6  27  21  B2  E7  B2  B2  Bl  06  06  BD  B5  B6  FE  8      06  80        F7  E6  28  03  02  50    BD  7D  FE  05        73  17        02  Cg  F    E7  8E  FE  A4  7F  20  02  00          F1  E6    8E  AE  OF    08  03  8E                7  B5  El  FE  32  AG    Cg    D3  M  FF    CF    01    F7  18  6A  B2  67  6D  56    D9  16  57  18  FE    18    18    8C  DA  FE  18    FO  A6  01          90  BA  42    19  18    00      7            B7    19    19    02    19    APPENDIX B ORIGIN SPECTRAL ASSOC    DISASSEMBLY OF SUPER EXTENDED BASIC 1 1      THIS IS A MAJOR BUG   SHOULD BE LDA  U    OF CODE WILL PRINT THE BUFFER TO    STA  X   RTS    NOT  LEF1   BSR  LEEC7  LDA  X  COMA  STA  X   RTS  LEF18 LDY  HRESBUFF  LDA  Y  CMPA   FF  BNE LEF2C  JMP LEED3  LEF25       Y  LBEQ LEED3  LEF2C     CMPB 902     BNE    LEF25  LDD      03 Y  LEAY  04 Y  STY VCF  LEAY  01 Y  LEAY D Y  STY VDI  RTS    HPRINT  HPRINT TST             LBEQ LE6EF  LBRN     RAMLINK  JSR LB26A  JSR LE7B2  JSR 18267  JSR                   JSR 18156  TST     VALTYP  BNE      62  JSR 18009  JSR 18516  LEF62 JSR 18657  STB     H PCOUNT  LDY   H  PBUF  LEF6C DECB  BMI     LEF75  LDA  X   STA  Y   BRA LEF6C  LEF75 LDA               LDB 440  CMPA 4903  BCS     LEF7F  LDB  80  LEF7F     CLRA  SUBD HORBEG  BMI     LF  1  CMPB   H PCOUNT  BHI LEF8E  STB     H PCOUNT  BEQ 1     01  LEFBE LDA  ROWMAX 1  CMPA VERBEG 1  BGE LEF96  STA     VERBEG 1  LEF96 JSR  LF  8C  JSR HCALPOS  LDY     4H PBUF  
20.   3277  3278  3279  3280  3281  3282  3283  3284  3285  3286  3287  3288  3289  3298  3291  3292  3293  3294  3295  3296  3297  3298  3299  3300  3301  3302  3303  3304  3305  3306  3307  3308  3309  3310  3311  3312  3313  3314  3315  3316  3317  3318  3319  3320  3321  3322  3323  3324  3325  3326  3327  3328  3329  3330  3331  3332  3333  3334  3335  3336  3337  3338  3339  3340  3341  3342  3343  3344  3345  3346  3347  3348  3349  3350  3351  3352  3353  3354  3355  3356  3357  3358  3359  3360      660    670  F672  F675  F678    F679  F67B  F67D    680    682    684    687  F68A    F68C  F68F  F693  F696  F698  F69B  F69D  F6AQ  F6A2  F6A5  F6A6  F6A9  F6AC    F6AD  F6AF  F6B3  F6B5  F6B8  F6B9  F6BB  F6BD  F6BF  F6C0  F6C4  F6C6  F6C9  F6CC  F6CF  F6D1  F6D4  F6D7  F6DA  F6DC  F6DF  F6EQ  F6E3  F6E5  F6E7            F6ED  F6F0  F6F2  F6F4    F6F6  F6F8  F6FA  F6FC  F6FF    F702  F708  F70E  F714  F719    F71B  F721  F727  F72D    F738  F732  F735  F737  F73A  F73D  F73F  F743  F745  F747  F749    F74D    FD  8D  17  17  39    86  97  17  86  C6  FD  cc  20    8E  10        86  F6  ED  BC  25  8E  4F  B7  B7  39    35  18  27  BD  5D  27  C1  22  5A  31  A6  B7  17  F7  86  17  8E  BF  8D  17  39  17  8D  20  7F  B6  B7  8D  C1  27    8D  8D  8D  8E  7E    4D  61  73  43  00    00  00  00  00    80  17  80  8E  BD  34  30  86    7    7  30      7          1    01    9    02  E7  0g  50  18        2    El    20  21  FE  20  FE  81  FE  F9  20    FE  FE    01  21  2B  B7
21.   3D  c3  1F  DC  44  56  44  56  38  96  84  CE  A6  35    34  D6  96  3D  C3  1F  DC  44  56  38  96  84  CE  A6  35    gD  10  BD  BD  BD  BD  BD  1      4  44  25  54  20  BD  BD  39    00  10  10  81  27  81  27  C6  BD  BD  9E  9F  9E  9F  BD  81  27  81  18  C6  86  5F  34  9D  BD  35  D7  BD  9D  18  BD  C6  BD  26  8D  8D  9E  34  9E  9F  8D  35  9F  9E  9F  20    20  01  BD    8B  BE  93  E7  C6   4    44    9          20  01  BD    8B  BE  01  E7  C6   4      6  27    2    7    2  El  E7  89  84    03          B4  EQ    E6  27  21  28  09        05  40  B2  E9  C3  C7  C5  C9  B2  BE  09  BD  26  01    04  9F  EA  04  C2  E7  A5  27  B2  42  B2  18  31  5A  BD  18  C3  BD  50  18  BD  C5  BF  1B    0g    F9    0g    FD    FE  6A  AA  67  19  DA    F3  FF    FE  17    6F  El    6D    C9    00    31    00  60    6F    8D    67  74    C6    85    GABITPIX      HPOINT  HPOINT    LE875    LE87B      HLINE  HLINE    LE899    LE8B3  LE8B4    MUL  ADDD  TFR  LDD  LSRA  RORB  LSRA  RORB  LEAX  LDA  ANDA  LDU  LDA  PULS    PSHS  LDB  LDA  MUL  ADDD  TFR  LDD  LSRA  RORB  LEAX  LDA  ANDA  LDU  LDA  PULS    TST  LBEQ  JSR  JSR  JSR  JSR  JSR  TFR  ANDB  LSRA  BCS  LSRB  BRA  JSR  JSR  RTS    TST  LBEQ  LBRN  CMPA  BEQ  CMPA  BEQ  LDB  JSR  JSR  LDX  STX  LDX  STX  JSR  CMPA  BEQ  CMPA  LBNE  LDB  FCB  CLRB  PSHS  JSR  JSR  PULS  STB  JSR  JSR  LBEQ  JSR  LDB  JSR  BNE  BSR  BSR  LDX  PSHS  LDX  STX  BSR  PULS  STX  LDX  STX  BRA    APPENDIX B  DISASSEMBLY OF SUPER EXTENDED BAS
22.   5    4  7    4  9    E4CC  E4CE      400    402    403  E4D4    406    409  E4DC  E4DF  E4E1  E4E4  E4E6    E4E9  E4EA  E4ED  E4EF  E4F1  E4F2  E4F4  E4F6  E4F8  E4F9  E4FA    E4FD  E500    E502  E505  E508  E5  A  E50C  E50F  E512  E514  E516  E519  E51B    E51E  E521  E523  E526  E528  E52B  E52D  E52F    E532  E535  E539  E53B  E53D  E540  E542    E545  E548  E54C  E54E  E550  E554  E556  E559  E55C  E55E  E560  E562  E566  E568  E56B  E56D  E570  E572    34  DC  FD  35  C1  26  DC  DD  1F  16    48  48    34  4    5F  DD  FD  FD  FD  86  B7  35  7E    4F  F6  c1  26  1D  20        26  53  57  7E    FC  20    BD  BD  1A  86  B7  cc  DD  86  B7  1c  7E    7D  27  FC  20  FC  DD  C6  7E    FC  18  34  86  B7  35  16    BD  18  8D  C1  18  34  BD  BD  1F  35        18  1A  17  A7  17  1C  39    94  68  FE  94  06  04  28  A6  10  FF    52  50    06    20  FE  FE  FE  FF  FE  06  AD    FE  FF  03    06  F1  01    B4    FE  F8          B9  50  34  FF  FF  00  38  FF  AF  AC    FE  05        03        68  BE  AC    FE  27  06  01  FE  06  FF    Bl  21  40  3F  22  14  B2  B7  98  14  3F  22  50        84                13    7D    0    BE  13  18    43    18    F4    13    19  5C    AG    FF    AG    76    17    15    11    49    0       8    17    94    41    1      CE    6D    B    CE    36    27    D8    B4    F6    E4    LE4C7    PSHS B  LDD CURLIN  STD     H ERLINE  PULS B   CMPB 4832   BNE LE4C7  LDD     BINVAL  STD     CHARAD  TFR X D   LBRA LE449      ENHANCED BASIC S 
23.   B2  B7  D3  EQ  El  01    08  FF        38        M  83  94  31    C3    BD    01    3F    BF F1    00 04    DF FD  FF  44    3D  12 Al         C6 E4    6D    3D    CB  19    FF  00         00    FF FF      GO HERE TO FINISH PAINTING TO RIGHT AFTER YOU    LED 1               X         ANDB  PSHS  ANDA  CMPA  PULS    STD  LDY  BSR    STY  BSR  LDX  LEAX  ADDD  RTS    THE DATA ARE AS FOLLOWS     APPENDIX B  DISASSEMBLY OF SUPER EXTENDED BASIC 1 1    vD8          ax  501 5  A B PC    VCD  HOREND  LED3A    HORBEG  LECC7  VCD  D X    1    ORIGIN  SPECTRAL ASSOC  REVISED 12 26 1999 WALTER K ZYDHEK    AND PIXEL MASK WITH BORDER COLOR   SAVE MASK AND BORDER PIXEL   TEST THE PIXEL ON THE SCREEN   COMPARE WITH ACCB ON THE STACK   EXIT WITH Z FLAG 1 IF MATCH   HAVE PAINTED LEFT   SAVE NUMBER OF PIXELS PAINTED   GET LAST HORIZONTAL START COORD   SAVE CURRENT HORIZONTAL COORD   HOREND NOW CONTAINS COORDINATE  OF THE LEFT BORDER OF THIS HORIZONTAL LINE   START PAINTING TO RIGHT FROM THE LEFT PAINT START COORD   PAINT TOWARDS THE RIGHT   GET THE NUMBER OF PIXELS PAINTED WHEN GOING TOWARDS LEFT PIXELS  ADD NUMBER OF PAINTED GOING TOWARD THE RIGHT   ADD 1 TO PAINT COUNT TOWARD RIGHT   ACCD LENGTH OF PAINTED LINE    BLOCKS OF DATA ARE STORED ON THE STACK SO THAT HPAINT   CAN REMEMBER WHERE IT SHOULD GO BACK AND PAINT UP OR DOWN   FROM THE CURRENT LINE IT IS PAINTING  THESE BLOCKS OF DATA   REPRESENT HORIZONTAL LINES ABOVE OR BELOW THE CURRENT LINE   BEING PAINTED AND REQUIRE SIX BYTES OF STO
24.   Computer 3  these colors will fire up in a uniform way  and pressing reset alone  won t change anything  If  when you press reset or turn on the computer  you hold  the F1 key down  the colors will be reversed  This method allows full compatibility  with previous Color Computer software    The original Color Computer had the capability of working at double the clock  speed  referred to as double speed   This didn t work in all machines  and was  never supported by Tandy  The Color Computer 3 is guaranteed to work in double  speed which can be turned on by storing data at  FFD9  and turned off by storing  data at  FFD8  Note that the Sound Speech Cartridge  SSC  does not work in the  double speed mode  At the time of this writing  there is no hardware fix to allow  the SSC to work in double speed  but it is expected that several fixes will be  available soon  The fix would undoubtedly not be supported by Tandy    The Color Computer 3 also supports two button joysticks or mice  Super  Extended Basic and 05 9 Level Two will allow you to read the second joystick  button    The last major addition to the Color Computer 3 is the inclusion of composite  and RGB output  This was primarily done to allow reasonable display of the super  high resolution graphics  The computer may be connected to any standard composite  monitor or any analog RGB monitor  this is different than TTL RGB or RGBI      SUPER EXTENDED BASIC UNRAVELLED II MEMORY MANAGEMENT ORIGIN  SPECTRAL ASSOC  REVISED 12 2
25.   DATA  STATEMENT ADDRESS POINTER   DATA POINTER FOR  INPUT   amp   READ     TV TEMP STORAGE FOR A VARIABLE NAME    TV POINTER TO A VARIABLE DESCRIPTOR   TEMP POINTER TO A VARIABLE DESCRIPTOR  POINTER TO RELATIONAL OPERATOR PROCESSING ROUTINE   TEMPORARY RELATIONAL OPERATOR FLAG BYTE      FLOATING POINT ACCUMULATORS 49 4  amp  5 ARE MOSTLY    USED AS SCRATCH PAD VARIABLES      FLOATING POINT ACCUMULATOR  3       FLOATING POINT ACCUMULATOR 44      40           41           42           43           44           45           46           47           48           2       FLOATING POINT ACCUMULATOR  5    V4A       RMB        PACKED   940 544      PACKED    45  49      PACKED    4A  4E     A2    SUPER EXTENDED BASIC UNRAVELLED II APPENDIX A ORIGIN SPECTRAL ASSOC                                                                                                               G                        004    0040    004    0050  0054  0055  0056  005      005    0050  0061    0062  0063  0064  0066  0068  006    006    006    0060  006    006      0070  0071  0072  0074  0076  0078  0079  007    007    0070  007    0080  0081  0082  0083  0084  0085  0086  0087  0088  008    008    0080    008    0090  0091  0092  0094  0095  0097  0099  009    009    009    0090    009    00  1  00  3  00  5    OC A7  26 02    C A6                      MEMORY MAP REVISED 12 26 1999 WALTER K ZYDHEK   V4B RMB 2  V4D RMB 2       FLOATING POINT ACCUMULATOR  0  FPOEXP RMB  PV FLOATING POINT ACCUMULATOR 46 E
26.   E260  E262    E264  E269  E26F  E275  E279    E27E  E280  E282  E284  E286    E288  E28B  E28E  E291  E294    E297    E29A    E29D    2        24  34  BD  35  8E  7E    57  50  C5  48  CE  4C  48  48  48  48  C5  48  48  48  48  48  45  42  4C  48  48  48  48  43  52  41    F6  E5  E6  E5  E6  E6  EB  EA  E8  ED  ED  ED  EF  E3  E3  F8  F9  E7  E7  F3  E6  E6  F9    4C  42  48  45  45    E5  E5  E8  E4  E4    8E  BD  8E  BD  7E    8E    7E    8E  7E    07  04  B2  04    2  B2    49  41    53    50  43  43  50  43    4C  47  50  42  50  52  52  4    53  53  52  44  4D  47  54    36  FO  88  45  CF  F4  F5  49  82  E5  ED  58  3F  D4  E6  D2  25  61  65  9D  76  74  B9    50  55  50  52  52    73  Bl  5C  E9  FD    80    9    2    9  80      2                          62    7E  CE    44  4C    43    4    4C  4    41  49    49  45  55  55  52  D2  CB  43  54  45  45  52  00  C2  54    45  54  4    4    4C    E7  9      7  9      8      2    C9    15  DC    54  45    52    4B  D3  4C  49  52    4E  D4  D4  46  49    41  41  D4  53  41    D2    45    c8  54    45    C5    4F    4      43    C5    C6  4E    54  D4    45  D7    CB    54    45    D2  D4  4C    04    C5    04    54 4F CE  49      D4    CF  49    CE    BCC  PSHS  JSR  PULS  LDX  JMP    LE1BF                    COMDIC29 FCC    LE1CA FCC  LE1D1 FCC  LE1D8 FCC  LE1DD FCC             FCC  LE1E7 FCC  LE1ED FCC  LE1F4 FCC  LE1F9 FCC  LE1FD FCC  LE201 FCC  LE206 FCC  LE20C FCC  LE2  F FCC  LE212 FCC  LE218 FCC  LE21D FCC  L
27.   E917  E91A  E91C  E91E  E921  E923  E926  E928  E92A  E92C  E92E  E92F    E931  E933  E935  E938  E93A  E93C  E93E  E940  E942  E945  E947  E949  E94C    E94E  E952  E955  E957  E959  E95D  E95F  E962  E965  E967  E969  E96C  E96F  E971  E973  E975  E977  E979  E97B  E97C  E97D  E97F  E983  E985  E988    E98A    E98D  E98F  E992  E994  E996  E998  E99A  E99D  E99F    C6  BD  20  30  9F    BD  9E  9    27  24  30  20  39    9    34  BD  24  9E  9F  1F  31  BD  35  DF  17  97  BD  96  AD  31  26  39  35    DC  34  BD  24  9E  9F  1F  31  BD  35  DF  17  20    10  BD  27  24  10  34        BD  27  24  CE  10  35  24  1    1    34  34  44  56  25  11  25  83  34    BD    AD  BD  AE  27  30  AF  AD  EC  E3    46  B2  04  1F  BF    E9  BF  C5  06  F1  01  EF    BD  18  E9  04  C3  BD  02  21  E7  40  BD  00  07  E7  D7   4  3F  F3    06    BF  06    9  04  C5  BF  02  21  E7  40  BF  00  03    8E  E9  AF  04  8E  06    9    9   8  03    9    3  10  04  32  01  46  06    09  83  03  00  16    E7     4    7  66  17  1F  66  F8  E4  62    6F    06    DB    DA    F5    88    CD    DA    D5    E9 B8  CD    E9 C6    Bl    DB    BF    4      9   9    01    E6    88    08    LE8EB LDB  JSR  BRA  LE8F2 LEAX  LE8F4 STX    APPENDIX B  DISASSEMBLY OF SUPER EXTENDED BASIC 1 1      F  LB26F  LE8F6    01 X  VERBEG    ORIGIN SPECTRAL ASSOC  REVISED 12 26 1999 WALTER K ZYDHEK    CHECK FOR FILL OPTION   GO DO A SYNTAX CHECK FOR AN  F    GO  FILL  THE BOX   MOVE VERTICAL COORD UP ONE   SAVE THE NEW
28.   FEED  B3ED  C359  A1CB  4000    ADD4  ADF4            AE11  AEBB  AEEB  AF45  AF67  B141  B156  B262  B267  B26A  B26F  B277  B284  B2CE  B357  B3A2  B3E9  B4F3  B511  B516  B54C  B56D  B654    LB657      7      LB734  LB73D  LB748  LB89D  LB8D7  1  905  LB958  LB95C  LB95F  LB9D7  LBA92  LBC35  LBCC8  LBDD9  LC000  LC00D  LC01B  LC  2F  LC  56  LC091  LC  B1  LC  C2  LC  C9  LC  DC  LC  F1  LC  F6  LC186  LC10C  LC137  LC165  LC175  LC180  LC185  LC18C  LC19A  LC1AA  LC1B1  LC1DE  LC1E7  LC1F   LC20A  LC22A  LC24E  LC257  LC259  LC25A  LC25B  LC25D  LC25E  LC261  LC263  LC264  LC267  LC269  LC26A  LC26E  LC278    B657    70      734  B73D    740  B89D  B8D7    905  B958  B95C  B95F  B9D7  BA92  BC35  BCC8  BDD9   000    000  C01B  CO2F  C056          COB1  COC2  Caco           COF1  COF6  6166  6166  C137  C165  C175  C188  C185  C18C  C19A  C1AA  6181  C1DE  C1E7  616    20      22      24    C257  C259  C25A  C25B  C25D  C25E  C261    ORIGIN SPECTRAL ASSOC  REVISED 12 26 1999 WALTER K ZYDHEK    LC271  LC275  LC277  LC278  LC28A  LC28C  LC28D  LC294  LC296  LC297  LC299  LC29B  LC29C  LC29E  LC2AG  LC2A1  LC2A3  LC2A5  LC2A6  LC2A8  LC2AA  LC2AB  LC2AE  LC2B0  LC2B1  LC2B2  LC2B4  LC2B5  LC2B8  LC2BA  LC2BB  LC2BF  LC2C1  LC2C2  LC2C6  LC2C8  LC2C9  LC2CB  LC2CD  LC2CE  LC2D1  LC2D3  LC2D4  LC2D8  LC2DA  LC2DB  LC2DE  LC2Eg  LC2E1  LC2E4  LC2E6  LC2E7  LC2EA  LC2EC  LC2ED  LC2F   LC2F2  LC2F3  LC2FB    C271  C275  C277    C2EC  C2ED    C2F3  C2FB    SUPER EXTENDED BASIC U
29.   Figure 3   MMU task registers    Special notes   1  All of the MMU registers may be read from as well as written to  However  only  the lower 6 bits of data are accurate  The top two bits should be masked off after  they are read  Also  in order to enable the MMU registers  bit 6 of  FF9  must be  set   2  The CoCo enable bit  bit 7   FF90  does not have any effect upon the operation  of the MMU registers  The MMU enable bit  bit 6   FF9   must be set in order for  the MMU registers to be operable   3  The area from  FFQ Q    FFFF is used for system input output and is never  affected by the MMU registers  The area from  FE        FEFF is a special page  256  bytes  of RAM and may be affected by the MMU registers if MC3  bit 3   FF9   is  clear     12    SUPER EXTENDED BASIC UNRAVELLED II SUPER HIGH RESOLUTION ORIGIN  SPECTRAL ASSOC  GRAPHICS REVISED 12 26 99 WALTER K ZYDHEK    SUPER HIGH RESOLUTION GRAPHICS    The CoCo 3 will support several  new high resolution graphics and  alphanumeric text modes in addition to most of the older low resolution graphics  and alphanumeric modes of the CoCo 2  The only CoCo 2 alphanumeric mode supported  by the CoCo 3 is the semi graphics 4 mode    The characteristics of the graphics modes are controlled by the graphics  control registers   FF98  FF9F   These registers are write only registers   attempting to read these registers will not return accurate data   The graphics  control registers can have their function modified by the CoCo co
30.   HRESSCRN  BEQ     LF7DE  BSR    LF7E2  BRA     LF7DE  LF7CA                  BNE     LF7CC  BSR LF827  BRA LF7D7  LF7CC     CMPA 4528  BCS     LF7DE  LDB     H CRSATT  STD xX  BSR LF807  LF7D7  CMPX H DISPEN  BCS     LF7DE  BSR 1  854  LF7DE BSR  LF778  PULS A B X PC  DO A HI RES BACKSPACE HERE  LF7E2   5  5        LDA       SPACE  LDB     H CRSATT  STD xX  ORB 4540  STD   02     LEAX   02     STX     H CRSLOC  LDD     H CURSX  DECA  BPL 1  802  DECB  STB     H CURSY  LDA     H COLUMN  DECA  LF802 STA          5    PULS A B PC  LF807  PSHS        LDA     4 20    B36    GET THE CURSOR CHARACTER    SUPER EXTENDED BASIC UNRAVELLED II    3457  3458  3459  3468  3461  3462  3463  3464  3465  3466  3467  3468  3469  3478  3471  3472  3473  3474  3475  3476  3477  3478  3479  3480  3481  3482  3483  3484  3485  3486  3487  3488  3489  3498  3491  3492  3493  3494  3495  3496  3497  3498  3499  3500  3501  3502  3503  3504  3505  3506  3507  3508  3509  3510  3511  3512  3513  3514  3515  3516  3517  3518  3519  3520  3521  3522  3523  3524  3525  3526  3527  3528  3529  3530  3531  3532  3533  3534  3535  3536  3537  3538  3539  3540  3541  3542  3543  3544  3545  3546  3547  3548  3549  3550  3551  3552    F80B  F80E    810  F812  F814  F817  F81A  F81B  F81E  F820  F821  F824  F825    F827  F829  F82B  F82E    830  F832  F835  F836  F839  F83C  F83E    840  F843  F846  F849  F84B  F84E    850    852      854  F856  F859  F85C  F85E    F860  F863  F865  F868  F86A  F86C    F86E  
31.   JSR  PSHS  JSR  CMPA  LBNE  JSR  TFR  PULS  PULS  CMPA  BEQ  CMPA  BNE  TFR  JMP  JSR  CMPA  BEQ  CMPA  BEQ  JSR  CLRA  PSHS  JSR  TST  BEQ     640  LF518   640 1  HRMODE    02  LF51F   320  LF51F   320 1   192  LF527  3192 1  HORDEF  HORBEG  VERDEF  VERBEG  VEREND  HOREND  VD5  LF53B  VERDEF  HORDEF  LEA D  VD6  LF545  LE94E  VD5  VD6  LF3CF    POSITION  LF591  A  LF578         LF591  3t   ILLFUNC  LF575  D X   U   A            570  PNE  LF507  U D  LF4D4  LF591        LF583  PE  LF584  LF5F2    A  LF3BD     5   LF598    COMPARE TO MAX HORIZONTAL COORDINATE   BRANCH IF WITHIN RANGE   FORCE MAXIMUM VALUE IF NOT   GET HI RES GRAPHICS MODE   SEE WHICH ONE   BRANCH IF MODE 3 OR 4   MAX HORIZONTAL COORD FOR 320x192 MODES  1 AND 2   BRANCH IF WITHIN LIMITS   FORCE TO MAXIMUM IF NOT   IS VERTICAL COORD WITHIN RANGE    BRANCH IF IT IS   FORCE TO MAXIMUM IF NOT   GET LAST HORIZONTAL POSITION   MAKE IT THE HORIZONTAL START   GET LAST VERTICAL POSITION   MAKE IT THE VERTICAL START   SAVE VERTICAL END COORD   SAVE HORIZONTAL END COORDINATE   CHECK UPDATE FLAG   BRANCH IF NO UPDATE   UPDATE VERTICAL POSITION OF DRAW POINTER   DO THE SAME WITH THE HORIZONTAL DRAW POINTER  NORMALIZE COORDS IN HOREND VEREND AND HORBEG VERBEG  CHECK DRAW FLAG   BRANCH IF NO DRAW   DRAWLINE FROM  HORBEG VERBEG  TO  HOREND VEREND   RESET UPDATE FLAG   RESET DRAW FLAG   GO GET ANOTHER COMMAND    GET A CHAR FROM COMMAND LINE   SAVE IT   EVALUATE THE HORIZONTAL DIFFERENCE   SAVE IT ON THE STACK   GET A CHAR FRO
32.   LDX  STX  CLRB  BRA    LDX  STX  LDB  TST  LBEQ  LBRN  STB  CMPA  BNE  JSR  JSR  JSR  JSR  STB  CLR  JSR  BEQ  COM  JSR  TST  BNE  LBRA  LDB  LDX  LDU  CMPA  BEQ  DECB  BNE  JMP  STU  JSR  JSR  JSR  LDB  JSR  LDD  CMPD  BLE  LDX  STX  STD  LDD  CMPD  BLE  LDX  STX  STD    LEDB    VD1 1  502     LEDD2  n  LEDA3  U Y  LED97         03 Y   05 Y  D Y  LEDC4     U    0   n  VD1 1  502     V03   03  Y  SELTASK    SETMMU           505      V03   D X  HHRESBUFF  1F 00  LEDD6     9 2   LEDD8    6 2   TMPSTACK 2  5        5    SETMMU  LAC46     LEECO  VD5    LEDF4     LEEEF  VD5   3901  HRMODE  LE6EF  RAMLINK  VD8                6  GETNCH              SYNCOMMA  EVALEXPB  VD3       4  GETCCH  LEE38      4                        8  LEE23  LB277    05   LEEES  X     X  LEE34    LEE28  LB277  VD5  GETNCH  LE CB  SELTASK1  VD3  LEF18  HORBEG  HOREND  LEE59  HOREND  HORBEG  HOREND  VERBEG  VEREND  LEE5D  VEREND  VERBEG  VEREND    APPENDIX B  DISASSEMBLY OF SUPER EXTENDED BASIC 1 1    ORIGIN SPECTRAL ASSOC  REVISED 12 26 1999 WALTER K ZYDHEK    GET THE BUFFER NUMBER   COMPARE TO THE BUFFER NUMBER OF THE CURRENT HEADER  HB NUM   RE DIMENSIONED ARRAY  DD  ERROR IF THE SAME   GET THE ADDRESS OF THE NEXT BUFFER   BRANCH IF THIS IS THE LAST HEADER   POINT Y TO THE START OF THE NEXT BUFFER HEADER   KEEP SEARCHING FOR THE LAST HEADER   SAVE THE START ADDRESS OF THE LAST HEADER IN U   GET THE SIZE OF THE LAST HEADER  HB SIZE    SKIP PAST THE HEADER DATA  HB LEN    NOW Y POINTS TOT THE START OF FREE
33.   eight 8K blocks of RAM  The MMU registers determine which eight of the 64 blocks  from the physical address space will compose the logical address space  As a  natural extension  the logical address space may be thought of as being composed of  eight logical blocks  The logical blocks are numbered from 0 7 as described in    10    SUPER EXTENDED BASIC UNRAVELLED II MEMORY MANAGEMENT ORIGIN  SPECTRAL ASSOC  REVISED 12 26 99 WALTER K ZYDHEK    Figure 1 above  The logical blocks are not really actual memory  the physical  blocks are actual memory   they are an 8K address space in the address range of the  CPU and their position relative to one another may not change in the eyes of the  CPU    The MMU registers have no effect whatsoever on the manner in which the GIME  chip displays graphic or text information  For the purpose of graphics  the 512K is  considered as one large contiguous super chunk of RAM  In order to make this easier  to understand since we are in a  block  frame of mind  just consider the video  display memory as 64 contiguous 8K blocks  In other words  the video display memory  is just the physical address space and there is no way to move the blocks relative  to one another    The process of setting up the CPUs memory space requires that you select  eight blocks  which will comprise the logical address space  Then you must program  the MMU registers with the block numbers selected  For example  if you wanted block  56   38  to occupy the CPU addresses      
34.  0  the corresponding dot is off  when the signal is 3   it is on at full strength  A value of 1 or 2 would be one of the intermediate  strengths  By combining these colors and intensities  a wide range of colors can be  generated  The computer determines the strength of the red  green  and blue signals  by the number of the color selected    Each RGB color value uses two bits to determine the strength of each of the  red  green  and blue signals  This means that a total of six bits are used to  determine the value of a color  six bits  of course  allows 64 possibilities    Figure 9 shows how each color is derived  Note that the bottom three bits of the  color value are used as the low order bits for each signal  The upper three bits  are used as the high order bits for each signal     Bits 6 7 Unused    Bit 5  R1 High Order Red  Bit 4  G1 High Order Green  Bit 3  B1 High Order Blue  Bit 2  R  Low Order Red  Bit 1  G   Low Order Green  Bit 0                Order Blue    Figure 9   RGB Color Makeup    For example  let s make the color purple which is made with the following  color strengths  Blue   3  Green   1  Red   2  Using the table above  this  translates to the following bit pattern  xx101011  or to a decimal value of 43   Refer to appendix D for a complete color chart     Colors on a Composite Monitor or Television    Colors on a composite monitor are generated in the same way as colors on a  TV  They are  however  derived in a completely different way than RGB colors  
35.  00   UNDER LICENSE FROM MICROSOFT      00          MICROWARE SYSTEMS CORP       0D  0D  00      GRAPHICS INITIALIZATION PATCH ENTERED FROM  9703    ALINK14 CLRA  CLRB  LBRN  STB  STD  STD  STD  STA  LDA  STA  LDA  STA  LDD  STD  LDA  STA  JMP      ON COMMAND  ALINK18 CMPA  BEQ  CMPA  BEQ  JSR  JMP  JSR  CMPA  BNE  JSR  CMPA  BNE  RTS  LEAS  JMP    LE3C2    LE3CF      ERR  ERR BSR  JSR  JSR  LDD  STD  LDD  STD  RTS      BRK    RAMLINK  H CRSATT  HRMODE  H ONBRK  H ONERR  H BCOLOR  501  H FCOLOR   BLOCK6 4  MMUREG  S FFFF    0  SBLOCK7 0  MMUREG  LAD19    RAM HOOK   SET CURSOR ATTRIBUTES TO ZERO   SET HI RES GRAPHICS AND TEXT MODES TO OFF   RESET THE ON BRK ADDRESS TO ZERO  NON INITIALIZED  RESET THE ON ERROR ADDRES TO ZERO  NON INITIALIZED  PALETTE REGISTER ZERO IS THE DEFAULT BACKGROUND COLOR  DEFAULT PALETTE REGISTER FOR THE FOREGROUND COLOR  USE PALETTE REGISTERI AS THE FOREGROUND COLOR   GET THE HPUT HGET BUFFER BLOCK   PIT IT INTO LOGICAL BLOCK 0   HPUT HGET BUFFER EMPTY FLAG   RESET THE HPUT HGET BUFFER TO EMPTY    RESTORE BLOCK 7 0 TO LOGICAL BLOCK 0 OF TASK REGISTER 0  GO DO A COMPLETE  NEW      FOR ON ERR AND ON BRK  PATCH ENTERED FROM  AF42            ERR    F0  BRK  EVALEXPB  LAF45  GETNCH    81  LE3CF  GETNCH    A5  LE3CF    502 5  18277    LE3C2  GETNCH  LAF67  BINVAL  H ONERR  CURLIN  H ONERRS      10     ERR  TOKEN     BRK  TOKEN   EVALUATE EXPRESSION  RETURN VALUE IN ACCB   JUMP TO THE ON COMMAND  AF45    GET THE NEXT CHARACTER FROM BASIC S INPUT LINE   GO  TO
36.  0677  0678  0679  0680  0681  0682  0683  0684  0685  0686  0687  0688  0689  0690  0691  0692  0693  0694  0695  0696  0697  0698  0699  0700  0701  0702  0703  0704  0705  0706  0707  0708  0709  0710  0711  0712  0713  0714  0715  0716  0717  0718  0719  0720  0721  0722  0723  0724  0725  0726  0727  0728  0729  0730  0731  0732  0733  0734  0735  0736  0737  0738  0739  0740  0741  0742  0743  0744  0745  0746  0747  0748  0749  0750  0751  0752  0753  0754  0755  0756  0757  0758  0759  0760  0761  0762  0763  0764  0765  0766  0767  0768                101    103    105    107    109  E10A  E10D  E118  E112  E114  E116  E118    E119  E11B  E11D  E11F  E121  E124  E126  E129  E12D  E12F  E131  E133  E135  E137    E138  E13A  E13C  E13E  E140  E142  E145  E148  E14A  E14D  E14F  E152  E154  E156  E158  E15B  E15D  E160    E162  E163  E165  E167  E168  E16A  E16C    E172  E174  E176  E17A  E17C  E17E  E188  E182  E184  E186  E189  E18B  E18D  E198    E192  E194  E196  E198  E19A    19      1      E1A3    E1A6  E1A8  E1AA  E1AC            E1B2  E1B4    DD  EC  DD  EC  DD  5F  F7  18  DC  34  DC  1C  39    1A  DD  35  DD  18  C6  F7  18  DC  34  DC  34  DC  39    00  26  96  81  23        7    86        97  7    96  81  23  7    86        20    17    1  El  05    2    1  00    33  60  10  30  A6  84  81  25  80  CE  20  80  CE  20    81  25  81  23  6E  80  8E  7E    C1  25  C1  23  6E  Cg  C1    40    4  42  62  44                42  06  40  AF    50  40  06  42  DF  01  
37.  18  34  6D  27  1E  8D  6A  20  35    04  24                      24    9          03  61  02    03  01  61    03  01  53  01  57    D3  01  49  4F    D3  00  48    D3  3C  F5    D3  94    D3  32  0g  18  33    F6  02        08  09  14            9  1      01    2  02  00        30          94    00    06  DA  10  06  D4  10  9    20    4  08  10  DF    4  F4  20    BF F3    73    BF E8    68    0g    00    11    33    B8    CB    E8      CHANGE ANGLE    APPENDIX B  DISASSEMBLY OF SUPER EXTENDED BASIC 1 1    ORIGIN SPECTRAL ASSOC  REVISED 12 26 1999 WALTER K ZYDHEK    ONLY ANGLES 0 3 ARE LEGAL  ILLEGAL FUNCTION CALL ERROR  SAVE DRAW ANGLE   GO PROCESS ANOTHER COMMAND    ONLY 0 63 ARE LEGAL   ILLEGAL FUNCTION CALL ERROR  SAVE DRAW SCALE   GO PROCESS ANOTHER COMMAND    NOW ACCD     VALUE OF THE SUBCOMMAND  MAKE HORIZONTAL DIFFERENCE NEGATIVE  BRANCH AROUND NEXT INSTRUCTION    NOW ACCD     VALUE OF THE SUBCOMMAND  COPY HORIZONTAL DIFFERENCE TO VERTICAL DIFFERENCE  GO MOVE THE DRAW POSITION    NOW ACCD     VALUE OF THE SUBCOMMAND   COPY HORIZONTAL DIFFERENCE TO VERTICAL DIFFERENCE  MAKE HORIZONTAL DIFFERENCE NEGATIVE   SWAP HOR AND VER DIFFERENCES   GO MOVE THE DRAW POSITION    NOW ACCD     VALUE OF THE SUBCOMMAND   COPY HORIZONTAL DIFFERENCE TO VERTICAL DIFFERENCE  MAKE HORIZONTAL DIFFERENCE NEGATIVE   GO MOVE THE DRAW POSITION    NOW ACCD     VALUE OF THE SUBCOMMAND  X 0  VERT DIFFERENCE   0  GO MOVE THE DRAW POSITION    NOW ACCD   VALUE OF THE SUBCOMMAND  MAKE HORIZONTAL DIFF
38.  1FFF  logical block 0   you must store  the value  38 into address  FFA0  If you wanted the high 64K of RAM of either a  128K or 512K machine to occupy the logical address space as one contiguous 64K  segment  you just load the values  38    3F consecutively into the consecutive  addresses  FFA      FFA7  This is how Basic sets up the CPU s memory space    It is important to realize that there is no prohibition against using the  same block in more than one block of the logical address space  If you put the same  block number in all of the MMU registers  then the same 8K block of RAM would be  mapped into all eight of the logical blocks    As an example of the power and flexibility which this system of memory  management offers  we will consider the logical address space arrangement used by  Basic to manipulate super hi res graphic screens  It is not possible to read data  from or write data into the Color Computer 3 s memory unless the memory is in the  logical address space  For example  if you wanted to read address  4F859  you would  not be able to unless block 39 had been mapped into a logical block by an MMU  register  Or  put another way  the value 39 must be in one of the MMU registers    FFAQ    FFA7   Basic allocates 32K of memory for its super hi res graphics  screen  In order to manipulate the screen  the 32K screen must be in the logical  address space  The bottom 32K of memory in a 128K system   60000    67FFF  is used  for the super hi res screen by Basic  In 
39.  21  08  24    04    5    2  B7  08  24  E4  61  3F  04    5  21    2  42  BA  04  80  04  9F  ED  55  26  04  40  04  9F  DD  04          F4    B7 9C  35      B  96 40    BA 84    6D    B    BA 71    6D    BA 4E    08      ATTR  ATTR    LF9E3    LF9F6    LFAG6              LFEOB  LFF00    CLRA  LDB  JSR  LDX  TST  LBMI  JSR  RTS    JSR  LBRN  CMPB  LBCC  ALSB  ALSB  ALSB  PSHS  JSR  JSR  JSR  CMPB  LBCC  ORB  LEAS  ANDB  PSHS  JSR  BEQ  JSR  CMPA  BNE  PULS  ORB  PSHS  JSR  BRA  CMPA  LBNE  PULS  ORB  PSHS  JSR  BRA  PULS  STB  RTS    RMB  RMB  RMB    VCD 1  GIVABF  VARDES    01 X  TMERROR  LBC35    EVALEXPB  RAMLINK  3908  ILLFUNC    B  GETCCH  SYNCOMMA  EVALEXPB  3508  ILLFUNC   5   501 5   3F   B   GETCCH  LFAG6  SYNCOMMA  HB   LF9F6   B    580        GETNCH  LF9E3    U   ILLFUNC  B     40   B   GETNCH  LF9E3   B  H CRSATT    1012  256  256    APPENDIX B  DISASSEMBLY OF SUPER EXTENDED BASIC 1 1    B39    ORIGIN SPECTRAL ASSOC  REVISED 12 26 1999 WALTER K ZYDHEK    ZERO OUT THE MS BYTE OF ACCD   GET THE Y COORDINATE OF THE CURSOR POSITION   CONVERT ACCD TO FLOATING POINT   POINT X TO THE VARIABLE DESCRIPTOR   CHECK THE SECOND CHARACTER OF THE VARIABLE NAME   TYPE MISMATCH ERROR IF STRING VARIABLE   PACK FPA   AND STORE      IN THE DESCRIPTOR POINTED TO BY X    EVALUATE EXPRESSION  RETURN VALUE IN ACCB  CHARACTER COLOR   RAM HOOK   8 CHARACTER COLORS MAXIMUM   ILLEGAL FUNCTION CALL ERROR IF CHARACTER COLOR 2 8    SHIFT THE CHARACTER COLOR INTO BITS 3 6   SAVE THE SHIFTED CO
40.  2215  2216  2217  2218  2219  2220  2221  2222  2223  2224  2225  2226  2227  2228  2229  2230  2231  2232  2233  2234  2235  2236  2237  2238  2239  2240  2241  2242  2243  2244  2245  2246  2247  2248  2249  2250  2251  2252  2253  2254  2255  2256  2257  2258  2259  2260  2261  2262  2263  2264  2265  2266  2267  2268  2269  2270  2271  2272  2273  2274  2275  2276  2277  2278  2279  2288  2281  2282  2283  2284  2285  2286  2287  2288  2289  2298  2291  2292  2293  2294  2295  2296  2297  2298  2299  2300  2301  2302  2303  2304             ECF9  ECFB  ECFD  ECFF        01      03  ED06    ED08  EDOB  ED D  EDOF  ED11  ED14    ED15  ED17  ED19  ED1B  ED1D  EDIF      20      22      24      26      28  ED2B  ED2D    ED2E  ED38  ED32  ED34  ED36  ED38  ED3A  ED3C  ED3E    ED3F      40      42        46  ED4A  ED4B  ED4D  ED4E  ED52  ED55    ED58  ED5B                62      66      68  ED6A  ED6D      70      72      75      78  ED7A  ED7B  ED7D      80  ED83  ED85  ED89  ED8B  ED8F  ED91    D4  34  A4  Al  35    DD  18  8D    18  8D  9E  30  C3  39    DD  35  DC  34  96  40  06  34  34  C6  BD  DC  39    DD  35  DC  34  96  20  9E  9F  39    50  32  11    18  50  32  39  18  BD  7E    BD  18  8C  18  9F  27  BD  BD  9F  BD  BD  DC  5D  26  cc  FD  20  18  EC  18  26  8D    D8  06  84  61  86    CD  9E  32    9F  BA  CD  8B  0g    CB  20  BD  16  D7    Cg  06  20  06                CB  20  C3  16  D7  E6  BD  C3    E5  8C    25    E5    CE  EQ  AC    B7  21  00  22  01  08
41.  2427  2428  2429  2430  2431  2432  2433  2434  2435  2436  2437  2438  2439  2440  2441  2442  2443  2444  2445  2446  2447  2448  2449  2450  2451  2452  2453  2454  2455  2456  2457  2458  2459  2460  2461  2462  2463  2464  2465  2466  2467  2468  2469  2470  2471  2472  2473  2474  2475  2476  2417  2478  2479  2480  2481  2482  2483  2484  2485  2486  2487  2488  2489  2490  2491  2492  2493  2494  2495  2496    EE61  EE63  EE65  EE67  EE69  EE6B  EE6D  EE6F  EE71  EE73  EE75  EE77  EE7A  EE7C  EE7F  EE82    EE84  EE86  EE88  EE8A  EE8C  EE8E      90      92      94      96      98      9    EE9C  EE9F            EEA4  EEA7  EEA9  EEAB  EEAD  EEAE  EEBO  EEB2  EEB5  EEB7  EEB9  EEBC  EEBF              EEC2  EEC4  EEC6  EEC7  EEC9  EECB  EECD  EED  EED2  EED3  EED7  EEDA  EEDD                    2                  5        6  EEE8  EEE9  EEEB  EEEC  EEEE    EEEF            EEF3  EEF5    EEF6  EEF8  EEFA  EEFB  EEFD    EEFE  EF  EF02  EF04  EF06    EF07  EF09              81  27  C6  81  26  C6  1F  94  97  D4  D7  BD  DD  BD  C3  DD    96  81  27  81  26  04  06  04  06  04  06  DC  C3  DD  BD  18  D6  34  AD  5A  26  35  BD  BA  26  BD  BD  39    A6  8D  A7  39  DE  33  DF  11  22  39  10  BD  BD  7E    EE  BD  EE  BE  EF  Bl  EE  B    EF  A8    8D  A6  A7  39    8D  A6  43  A7  39    8D  A6  A4  A7  39    8D  A6  AA    03  08        02  02        98               4   4    9   3    9  0g  C5    E6  02  0    03  04  C3   4   3   4   3   4   3  0g  C3  E7  9E   4  18  A4
42.  26 1999 WALTER K ZYDHEK    DIVIDE ACCA BY 8   OCTANT NUMBER    SUBARC  SUBARC  SUBARC  SUBARC  SUBARC  SUBARC  SUBARC  SUBARC  SUBARC                                      MULTIPLY RADIUS BY SIN COS VALUE AND RETURN OFFSET IN X    LSRA  RTS   CIRCDATA FDB   LEB9D FDB              FDB   LEBA5 FDB   LEBA9 FDB   LEBAB FDB   LEBAF FDB   LEBB5 FDB   LEBB9 FDB   LEBBD LDX  LDD  BEQ  SUBD  BSR  TFR   LEBCA RTS                                        JU  LEBCA   1  LEBCB  Y X       GET RADIUS   GET SIN COS TABLE MODIFIER  BRANCH IF    OFFSET   RADIUS   SUBTRACT ONE   MULTIPLY RADIUS BY SIN COS  RETURN RESULT IN X    MULTIPLY  UNSIGNED  TWO 16 BIT NUMBERS TOGETHER     ENTER WITH ONE NUMBER IN ACCD  THE OTHER IN X REGISTER   THE 4 BYTE PRODUCT WILL BE STORED IN 4 5   7 5    Y  U REGISTERS ON THE STACK   I E   AA AB  x  XH XL     256   AA   XH   16    AA   XL   AB   HX    AB   XL  THE TWO BYTE  MULTIPLIER AND THE MULTIPLICAND ARE TREATED AS A 1   BYTE INTEGER PART  MSB  WITH A 1 BYTE FRACTIONAL PART  LSB     SAVE REGISTERS AND RESERVE STORAGE SPACE ON THE STACK  RESET OVERFLOW FLAG    CALCULATE ACCB XL  STORE RESULT IN 6 5    CALCULATE ACCB XH          M    ADD THE CARRY FROM THE 1ST MUL TO THE RESULT OF THE 2ND MUL         M    CALCULATE ACCA XL       ADD RESULT TO TOTAL OF 2 PREVIOUS MULTS  BRANCH IF NO OVERFLOW  SET OVERFLOW FLAG  ACCD     FFFF       CALCULATE ACCA XH      ADD TO PREVIOUS RESULT  RETURN WITH RESULT IN U AND Y    CHECK HI RES GRAPHICS MODE    HR  ERROR IF HI RES GRAPHI
43.  29   25 17  0371   0372   0373   29   87       0374   2     02   0375   2  1 26 05  0376   0377   0378   2     88       0379  C2A5 02   0380 C2A6 26 82  0381   0382   0383 C2A8 80 B2  0384  C2AA 03    07 3F 1F  12 00 3F  26    APPENDIX B  DISASSEMBLY OF SUPER EXTENDED BASIC 1 1       IMAGES OF THE PALETTE REGISTERS  FFB   FFBF   PALIMAGE FCB 18 36 11 7 63 31   FCB     9 38 0 18 0 63   FCB     0 18 0 38       IMAGES OF THE MMU REGISTERS  FFAQ FFAF      TASK REGISTER 0   MMUIMAGE FCB BLOCK7   BLOCK7 1 BLOCK6 4  BLOCK7 3 BLOCK7 4 BLOCK7 5  BLOCK7 6 BLOCK7 7      TASK REGISTER 1    LC24E FCB BLOCK 7 0   10    6 0   10    6 1  BLOCK6 2 BLOCK6 3 BLOCK7 5  BLOCK6 5 BLOCK7 7    TABLE OF PATCHES TO BE MADE TO COLOR AND EXTENDED BASIC  THE FIRST BYTE    IS THE TOTAL NUMBER OF PATCHES TO BE MADE FOLLOWED BY THE CODE FOR ALL OF    THE PATCHES  THE INDIVIDUAL PATCHES HAVE A THREE BYTE HEADER CONSISTING OF THE    ADDRESS WHERE THE PATCH IS TO GO AND THE NUMBER OF BYTES IN THE PATCH     PATCHTAB FCB 27 NUMBER OF PATCHES      PATCH 1   ENABLE EXTENDED BASIC WARM START CODE          LC257 FDB           1 80C0  LC259 FCB 01  LC25A NOP    PATCH 2   CRUNCH A TOKEN  LC25B FDB PATCH2 B8D4  LC25D FCB 03  LC25E JMP ALINK2 E138    PATCH 3   UNCRUNCH A TOKEN  LC261 FDB PATCH3 B7F3  LC263 FCB 93  LC264 JMP ALINK3 E172    PATCH 4   EXTENDED BASIC S COMMAND INTERPRETATION LOOP  LC267 FDB PATCH4 8150  LC269 FCB 04  LC26A JMP ALINK4 E192  NOP    PATCH 5   EXTENDED BASIC S SECONDARY COMMAND HANDLER  LC26E 
44.  3074  3075  3076  3077  3078  3079  3080  3081  3082  3083  3084  3085  3086  3087  3088  3089  3090  3091  3092  3093  3094  3095  3096  3097  3098  3099  3100  3101  3102  3103  3104  3105  3106  3107  3108  3109  3110  3111  3112  3113  3114  3115  3116  3117  3118  3119  3120  3121  3122  3123  3124  3125  3126  3127  3128  3129  3130  3131  3132  3133  3134  3135  3136  3137  3138  3139  3140  3141  3142  3143  3144  3145  3146  3147  3148  3149  3150  3151  3152  3153  3154  3155  3156  3157  3158  3159  3160  3161  3162  3163  3164  3165  3166  3167  3168    FAF3  FAF6  F4F8  FAFA  FAFC  FAFE  F501  F503  F505    F507  F50B  F50D  F518  F512  F514  F516  F51A  F51C  F51F  F522  F524  F527  F529  F52B  F52D  F52F  F531  F533  F535  F537  F539  F53B  F53E    540  F542  F545  F547  F549    F54C  F54F  F551  F554  F556  F559  F55B  F55F  F562  F564  F566  F568  F56A  F56C  F56E  F570  F572  F575  F578  F57A  F57C  F57E  F580  F583  F584  F586  F589  F58B    F58D  F58E  F598    F591  F593  F595  F599  F59B  F59D  F59F            F5A3  F5A5    F5A7  F5A9  F5AB  F5AD  F5AF  F5B2  F5B4  F5B6  F5B9    CE  D3  2B  1F  1F  8E  D3  2B  1F    11  25  CE  96  81  2E  11  25  CE  8C  25  8E  DC  DD  DC  DD  9F  DF  00  26  9F  DF  BD  00  26  BD  OF  OF          BD  34  BD  34  BD  81  10  BD  1F  35  35  81  27  81  26  1F  7E  BD  81  27  81  27  BD  4    34  BD  6D  27    50  82  39    34  00  10  9      6  9F  BA  81  27  35    81  26  34  8D  BD  DD  35  BD  18    00  C7  02  0
45.  504 5  LEBEA       S  LDB 902 5  MUL    000 904 5  STD 904 5  PULS A B X Y U PC    HPAINT  HPAINT TST             LBEQ LEGEF  LBRN             CMPA       BNE LEC0O5  JSR               LECU5 JSR 1      4  JSR     LE7AD  LDA     4 01  STA SETFLG  JSR 1  718  LDD     WCOLOR  PSHS        JSR               BEQ     LECID  JSR 1  718  LECID LDA ALLCOL  STA     VD8  PULS A B  STD     WCOLOR  JSR SELTASK1  CLRA  PSHS U X B A  JSR 1    60  JSR 1  7  6        PAINT  THE FIRST HORIZONTAL LINE FROM THE START COORDINATES  STU VD9  JSR LECBE  BEQ     LEC47  JSR 1  001  LDA     4 01  STA VD7  JSR LED2E  NEG     VD7  JSR LED2E  LEC47 575 TMPSTK  LEC4A TST  CHGFLG  BNE LEC51    B22    BRANCH IF DATA HAS BEEN MODIFIED    SUPER EXTENDED BASIC UNRAVELLED II    2113  2114  2115  2116  2117  2118  2119  2120  2121  2122  2123  2124  2125  2126  2127  2128  2129  2138  2131  2132  2133  2134  2135  2136  2137  2138  2139  2148  2141  2142  2143  2144  2145  2146  2147  2148  2149  2158  2151  2152  2153  2154  2155  2156  2157  2158  2159  2168  2161  2162  2163  2164  2165  2166  2167  2168  2169  2178  2171  2172  2173  2174  2175  2176  2177  2178  2179  2188  2181  2182  2183  2184  2185  2186  2187  2188  2189  2198  2191  2192  2193  2194  2195  2196  2197  2198  2199  2200  2201  2202  2203  2204  2205  2206  2207  2208    EC4E  EC51  EC53  EC55  EC58  EC5A      5              EC60  EC62    EC64  EC65  EC67  EC69  EC6A  EC6B    EC6D    EC6E  EC70  EC73  EC75  EC79  EC7B  EC7D  EC80  EC83    
46.  60 55 Light red   29 60 Magenta tint cyan 61 57 Light magenta   30 47 Brown tint cyan 62 63 Light yellow   31 61 Faded cyan 63 48 White    El    SUPER EXTENDED BASIC UNRAVELLED II APPENDIX E ORIGIN SPECTRAL ASSOC    COLOR COMPUTER 3 COLORS REVISED 12 26 1999 WALTER K ZYDHEK    Converting RGB Colors to Composite Colors    It will often be beneficial to allow a graphic display to appear the same on  a composite monitor as it does on an RGB monitor  The following Basic routine   which will convert an RGB color code into its closest similar composite color code   can be used  Since RGB colors are derived in a different manner than composite  colors  no conversion will be exact     The     SET UP CONVERSION FACTORS FOR COMPOSITE COLORS   DIM C 63    FOR X   0 TO 63   READ C X    NEXT X  GOTO 100   DATA 0 12 2 14 7 9 5 16 28 44 13 29 11 27 10 43  DATA 34 17 18 33 3 1 19 50 30 45 31 46 15 60 47 61  DATA 23 8 21 6 39 24 38 54 25 42 26 58 24 41 40 56  DATA 20 4 35 51 37 53 36 52 32 59 49 62 55 57 63 48     CONVERT C TO COMPOSITE COLOR IF NOT RGB          56   IF R   THEN             RETURN ELSE RETURN             BODY OF PROGRAM    FIGURE 16   BASIC PROGRAM TO CONVERT RGB COLORS TO COMPOSITE    above routine should be near the beginning of the program  but after the    CLEAR statement   The program must ask for the type of monitor being used   If an RGB monitor is in use  set R 1  otherwise set R    Then  when it is  time to set a color  make C equal to the RGB color desired and exec
47.  63ns      10    SUPER EXTENDED BASIC UNRAVELLED II    0741  0742  0743  0744  0745  0746  0747  0748  0749  0750  0751  0752  0753  0754  0755  0756  0757  0758  0759  0760  0761  0762  0763  0764  0765  0766  0767  0768  0769  0770  0771  0772  0773  0774  0775  0776  0777  0778  0779  0780  0781  0782  0783  0784  0785  0786  0787  0788  0789  0790  0791  0792  0793  0794  0795  0796  0797  0798  0799  0800  0801  0802  0803  0804  0805  0806  0807  0808  0809  0810  0811  0812  0813  0814    FF92    FF92    FF93    FF93    FF94  FF96    FF98    FF98    FF99    FF99    IRQENR RMB 1    BIT       6           EIl  BIT2 EI2  BIT3 VBORD  BIT4 HBORD  BIT5 TMR  BIT6   BIT7    FIRQENR RMB 1    BIT   EI             EIl  BIT2 EI2  BIT3 VBORD  BIT4 HBORD  BIT5 TMR  BIT6   BIT7    V TIMER RMB 2    VIDEOREG RMB 1             BIT   LPR                             2       2  BIT3 H5        4 MOCH  BIT5 BPI  BIT6  BIT7 BP  LPR2                    0 0 0  0 0  0 1 0  0 1  1 0 0  1 0  1 1 0  1 1  VIDEOREG RMB  BITE CRESS           CRES1  BIT2 HRES   BIT3 HRES1  BIT4 HRES2  BITS LPF0  BIT6 LPF1  BIT7  LPF1 LPF0  0 0  0 1  1 0  1 1       VIDEO RESOLUTION  ALPHA  BP   6  COCO    MODE  32 CHARACTER  40 CHARACTER  80 CHARACTER    APPENDIX A ORIGIN SPECTRAL ASSOC  MEMORY MAP REVISED 12 26 1999 WALTER K ZYDHEK    IRQ INTERRUPT ENABLE REGISTER    CARTRIDGE IRQ ENABLED  KEYBOARD IRQ ENABLED   SERIAL DATA IRQ ENABLED  VERTICAL BORDER IRQ ENABLED  HORIZONTAL BORDER IRQ ENABLED  INTERRUPT FROM TIMER ENA
48.  6D    F4    B7  35  57    28    59    D5    F3    CB    B2      LOCATE  LOCATE    LF8EB  LF8ED      HSTAT  HSTAT    LF963    JMP    LDB  LBRN  BEQ  PSHS  JSR  LDA  PULS  CMPB  BNE  CMPA  BRA  CMPA  LBCC  LDB  CMPB  BCC  PSHS  LBSR  STD  LDX  LDA  STA  LDA  ALSA  MUL  LDX  LEAX  PULS  ALSA  TFR  ABX  LDA  ORA  STA  STX  LBSR  RTS    TST  LBRN  BEQ  LBSR  LDX  LDD  STD  LDD  STD  LBSR  JSR  STX  JSR  LDB  JSR  LDA  JSR    STA  JSR  LDX  TST  LBPL  LDY  LDB  LDA  STA  DECB  BNE  LDX  LEAX  STX  JSR  STX  JSR  CLRA  LDB  JSR  LDX  TST  LBMI  JSR  JSR  STX  JSR  CLRA  LDB  JSR  LDX  TST  LBMI  JSR  JSR  STX    APPENDIX B  DISASSEMBLY OF SUPER EXTENDED BASIC 1 1    LAC46    HRWIDTH  RAMLINK  LF8CD   B   LE7B2  BINVAL 1  B    901  LFBEB   40             80  ILLFUNC  VERBEG 1   ROWMAX  LF8ED         LF772  H CURSX  H CRSLOC  H CRSATT  4601       H  COLUMN     HRESSCRN  D X  A B    A B    H CRSATT   940   01 X  H CRSLOC  LF778    HRWIDTH  RAMLINK  LF8CD  LF772  H CRSLOC  X   VCB  H CURSX  VCD  LF778  LB357  VARDES  SYNCOMMA    01  18560  VCB  18511        LB54C  VARDES    01     TMERROR            2    05  Yt   X    LF963  TEMPPT    05 X  TEMPPT  18357  VARDES  SYNCOMMA    VCB 1  GIVABF  VARDES    01 X  TMERROR  LBC35  18357  VARDES  SYNCOMMA    VCD  GIVABF  VARDES    01 X  TMERROR  LBC35  18357  VARDES    B38    ORIGIN SPECTRAL ASSOC  REVISED 12 26 1999 WALTER K ZYDHEK    JUMP TO ERROR HANDLER       46     IS THE HI RES TEXT MODE ENABLED    RAM HOOK    HP  ERROR IF NOT ENABLED   SAV
49.  A            ALLCOL    X    X       MODES 1 4 PRINT DRIVER    LF  1A    PSHS  LDY  TFR  LSRA  LSRA  LSRA  LSRA  LDA  JSR  ANDB  LDA  JSR  PULS  RTS    Y   LFO35  A B    AY  LFOGA    0F  B Y            Y      FOUR COLOR PIXEL MASKS    LF 35      MODE 2  LF 45    FCB  FCB  FCB    PRINT  PSHS  LDY  LSRA  LSRA  LSRA  LSRA  ALSA  LDD  JSR  TFR  JSR  PULS  ANDA  ALSA  LDD  JSR  TFR  JSR  PULS  RTS    500 503 50   50   530 533   3C  3F  C0  C3  CC           F8  F3  FC  FF    DRIVER          LF06C    A Y                    LFOGA       0F    A Y                    LFOGA      16 COLOR PIXEL MASKS   DOUBLE BYTE WIDE    LF 6C    FDB  FDB  FDB  FDB  FDB  FDB     0000  5000   500  0   OOFF    OFO0  50  0     0FF0  0FFF  F000   F00F  F0F0  F0FF   FF00  FF0F  FFFO   FFFF    ORIGIN SPECTRAL ASSOC  REVISED 12 26 1999 WALTER K ZYDHEK    MULTIPLY ACCD BY 8   8 BYTES PER CHARACTER   GET THE FIRST BYTE OF THE GRAPHIC CHARACTER FROM THE  ROM   PUT THE BYTE ON THE HI RES SCREEN  DECREMENT CHARACTER COUNT   KEEP GOING UNTIL ALL CHARACTERS DONE  RESTORE THE PRINT BUFFER POINTER   ROM   BUMP THE ROW COUNTER DOWN ONE   BRANCH IF ALL ROWS DONE   RESET THE CHARACTER COUNT   ADJUST THE  ROM  POINTER DOWN ONE ROW  MOVE X DONW ONE HI RES ROW   KEEP LOOPING UNTIL THE WHOLE ROW IS DONE  MAKE TASK REGISTER    ACTIVE    POINTER  amp  CHAR COUNT    MODE  MODE  MODE  MODE    omo    SAVE THE CHARACTER MASK   INVERT THE MASK    AMD  IT WITH THE SCREEN DATA   CREATE A HOLE FOR THE CHARACTER  DATA AND THEN PUT IT BAC
50.  ADDRESS  SAVE THE LARGER OF DELTA V  DELTA H    DIVIDE BY 2  SHIFT ACCD RIGHT ONE BIT   BRANCH IF ODD NUMBER   SEE IF INCR OR DECR   BRANCH IF INCR   SUBTRACT ONE IF DECR   SAVE SMALLEST DELTA  X  AND INITIAL MINOR COORDINATE      INCREMENT COUNTER WHICH IS 1 2 OF LARGEST DELTA    JSR    LE7E6    POINT U TO PROPER COORDINATE TO SCREEN CONVERSION ROUTINE       DRAW THE LINE HERE   AT THIS POINT THE STACK HAS THE DRAW DATA ON IT         1 S MINOR       g   23    45    67    COORDINATE INCREMENT COUNTER     S ABSOLUTE VALUE OF THE SMALLEST DELTA COORDINATE  ABSOLUTE VALUE OF THE LARGEST DELTA COORDINATE    S LARGEST COORDINATE COUNTER  HOW MANY TIMES THROUGH THE DRAW LOOP     INITIALLY SET TO ABSOLUTE VALUE OF LARGEST DELTA    8 9 S ADDRESS OF THE ROUTINE WHICH WILL INCREMENT OR DECREMENT THE LARGEST DELTA COORDINATE    LE98D JSR  JSR  LDX  BEQ  LEAX  STX  JSR  LDD  ADDD       U  LE788  506 5  LE9AD    01 X  506 5    08 5   E  502 5    B18    CONVERT  X Y  COORDINATES TO ABSOLUTE SCREEN ADDRESS  TURN ON A PIXEL   GET DISTANCE COUNTER   BRANCH IF LINE COMPLETELY DRAWN   DECR ONE   SAVE IT   INCR DECR COORDINATE WHICH HAS THE SMALLEST DELTA  GET THE MINOR COORDINATE INCREMENT COUNTER   ADD THE SMALLEST DIFFERENCE    SUPER EXTENDED BASIC UNRAVELLED II    1729  1738  1731  1732  1733  1734  1735  1736  1737  1738  1739  1748  1741  1742  1743  1744  1745  1746  1747  1748  1749  1758  1751  1752  1753  1754  1755  1756  1757  1758  1759  1768  1761  1762  1763  1764  1765  1766  17
51.  B X F68C CLEAR THE HI RES TEXT SCREEN   Clear the hi res text  Screen and home the cursor  The text screen must be in  logical block 1 for this routine to function    A B X F8F7 MOVE THE HI RES CURSOR   Move the hi res cursor to the  column and row numbers specified in ACCA and ACCB  respectively       The CC register is modified by all routines    H4    ORIGIN SPECTRAL ASSOC  REVISED 12 26 1999 WALTER K ZYDHEK    SUPER EXTENDED BASIC UNRAVELLED II APPENDIX I  BASIC 1 2 EXTENDED 1 1 vs COLOR EXTENDED 2 0 DIFFERENCES    BASIC 1 2 EXTENDED 1 1 vs COLOR EXTENDED 2 6 DIFFERENCES    Listed below are all of the sections of code where the Basic 1 2 and Extended Basic 1 1 ROMs differ from the  bottom half of the CoCo 3 ROM  If these changes are made in the Color Basic Unravelled and Extended Basic Unravelled  books  those books can then be used with the new CoCo 3 ROM  The code below is CoCo 3 code       EXBAS WARM START ENTRY POINT                         PATCH1  80C0 XBWMST FCB   FF SET TO NOT ALLOW A RESET TO WARM START HERE  80  8 180  8         EXTENDED COLOR BASIC 2 0   8100 FCB CR  8101         COPR  1982  1986 BY TANDY  811C FCB CR  811D FCC  UNDER LICENSE FROM MICROSOFT   8139 FCB CR  813A PATCH13 FCB CR      DLOAD COMMAND  8C18 DLOAD JSR 1  429 CLOSE FILES    PRESSING THE RESET WILL BRING YOU HERE  8C1B INT RSET ORCC 4950 DISABLE IRQ  FIRQ INTERRUPTS  8C1D LDA   MC3 MC1 32K INTERNAL ROM  MMU DISABLED  NON COCO COMPATIBLE  8C1F STA INITO  8C22 CLR SAM  1E  8C25 JMP  C000   
52.  BIT3  0633 BIT4  0634       5  0635 BIT6  0636 BIT7  0637   0638 FF23 BIT    0639   0640           0641   0642       2  0643 BIT3  0644 BIT4  0645       5  0646       6  0647 BIT7  0648   0649 FF24   0650     40       2  0651     40 DSKREG  0652   0653     40 BIT    0654           0655 BIT2  0656 BIT3  0657       4  0658 BIT5  0659 BIT6  0660 BIT7  0661   0662 FF41   0663   0664   0665 FF48 FDCREG    APPENDIX A  MEMORY MAP    CONTROL OF VSYNC  16 667ms   INTERRUPT   CONTROL OF INTERRUPT  POLARITY   NORMALLY 1   SEL 2   ALWAYS 1   ALWAYS 1   NOT USED   FIELD SYNC INTERRUPT FLAG                      How H H H    co          RMB 28  EQU      CASSETTE DATA INPUT  RS 232C DATA OUTPUT  6 BIT D A LSB   BIT D A   BIT D A   BIT D A   BIT D A   BIT D A MSB                   CONTROL OF CD    RS 232C STATUS   CONTROL OF INTERRUPT  POLARITY   NORMALLY 1   CASSETTE MOTOR CONTROL  ALWAYS 1   ALWAYS 1   NOT USED   CD INTERRUPT FLAG                  Won m m Hd ou    RS 232C DATA INPUT   SINGLE BIT SOUND OUTPUT  RAM SIZE INPUT  RGB MONITOR SENSING INPUT CSS             VDG CONTROL OUTPUT GM    VDG CONTROL OUTPUT GM1  VDG CONTROL OUTPUT GM2  VDG CONTROL OUTPUT A  G  CONTROL OF CARTRIDGE 0    INTERRUPT 1    CONTROL OF INTERRUPT         POLARITY 1    NORMALLY 1         SOUND ENABLE   ALWAYS 1   ALWAYS 1   NOT USED    CARTRIDGE INTERRUPT FLAG  RMB 28   RMB 1   DRIVE SELECT 0    DRIVE SELECT 1  DRIVE SELECT 2             IMAGES    ORIGIN SPECTRAL ASSOC  REVISED 12 26 1999 WALTER K ZYDHEK    IRQ  T
53.  BIT6  BIT7    2 COLOR MODES     BYTE FROM  BIT              BIT2  BIT3  BIT4     CRESI 1  CRES0   0     DRAM  PAG   PAL   PA2   PA3   PAG   PAL   PA2   PA3     SECOND PIXEL  SECOND PIXEL  SECOND PIXEL  SECOND PIXEL  FIRST PIXEL  FIRST PIXEL  FIRST PIXEL  FIRST PIXEL     CRES1 0  CRESS   1     DRAM  PAG   PAL   PAG   PAL   PAG   PAL   PAG   PAL     FOURTH PIXEL  FOURTH PIXEL  THIRD PIXEL  THIRD PIXEL  SECOND PIXEL  SECOND PIXEL  FIRST PIXEL  FIRST PIXEL     CRES1 8  CRES   0     DRAM  PAG   PAG   PAG   PAG   PAG        Al    EIGHTH PIXEL  SEVENTH PIXEL  SIXTH PIXEL  FIFTH PIXEL  FORTH PIXEL    2    ORIGIN  SPECTRAL ASSOC    REVISED 12 26 1999 WALTER K ZYDHEK          on Gon  lt    G UG Gom    ADDR   ADDR   ADDR   ADDR   ADDR   ADDR     BLINK AT 1 2 SEC  RATE    ATTRIBUTES NOT AVAILABLE WHEN COCO    1    CSS  CSS    CSS  CSS  CSS  CSS  CSS  CSS  CSS  CSS    SUPER EXTENDED BASIC UNRAVELLED II       FF9A    FF9A    FF9B  FF9C    FF9C    FF9D    FF9D    FF9E    FF9E    BIT5  BIT6  BIT7      PALETTE ADDRESSES    V BORDER    BIT              BIT2  BIT3  BIT4  BITS  BIT6  BIT7    V SCROLL    BITE            BIT2  BIT3  BIT4  BITS  BIT6  BIT7       IN COCO MODE  THE VSC S MUST BE INITIALIZED TO  9F    V OFSETI    BITE            BIT2  BIT3  BIT4  BITS  BIT6  BIT7    V OFSETO    BITE            BIT2  BIT3  BIT4  BITS  BIT6  BIT7    RMB    BLUE  GRN    RED    BLUI  GRN1  REDI    RMB  RMB       VSCO  VSC1  VSC2  VSC3    RMB            12    13    14    15    16  Y17  Y18    RMB      10 
54.  BNE  RTS    Yt  X    MOVE XY     AUTHORMS  LC3 D PC   21   Yt    X     LC1E7    TEMPORARILY SAVE THE END OF COPY ADDRESS  AND THE STACK POINTER  ENABLE THE ROM    DISABLE THE ROM  NOW SAVE THE DATA FROM THE CPU REGISTERS INTO ROM    MOVE THE COPY POINTER UP 8 BYTES  CHECK FOR END OF THE COPY RANGE    RESTORE THE STACK    POINT X TO THE DESTINATION FOR THE AUTHORS  NAMES  POINT Y TO THE CODED NAMES OF THE AUTHORS   21 BYTES IN THE AUTHORS  NAMES   GET A CODED BYTE OF THE AUTHORS  NAMES   DECODE THE BYTE   SAVE THE UNCODED BYTE   BUMP COUNTER DOWN ONE    LOOP UNTIL ALL BYTES DECODED      THIS IS THE CODE WHICH DISPLAYS THE HIGH RESOLUTION PICTURE OF THE    AUTHORS OF SUPER EXTENDED BASIC    LC1F0 CLRA  STA  STA  STA  LDB  STB  LDB  STB  LDX  LDY  LC20A LDD  LDU  STD  STU  CMPX  BCS  LDA  STA  CLRA  LDX  STA  STA  STA  STA  STA  LC22A STA  WAITLOOP BRA    INT FLAG  RSTFLG         30     09  PALETREG 10   63  PALETREG 11                     0  00   X       X                   10  05  LC20A     F9   PIA1 2     SAM  X    03 X   05  X   07  X   99  X  50       WAITLOOP    SET THE INTERRUPT FLAG TO NOT VALID  NOT INITIALIZED   FORCE THE ROMS TO BE COPIED INTO RAM  ENABLE THE ROMS    WHITE  COMPOSITE AND RGB     POINT X TO THE AUTHORS  PICTURE DATA  DESTINATION OF THE AUTHORS  PICTURE DATA    GET FOUR BYTES OF PICTURE DATA   PUT THE DATA ON THE HI RES SCREEN   AT THE END OF THE PICTURE DATA    NO   256x192 GREEN BUFF COCO 2 HI RES GRAPHICS MODE   PROGRAM THE GRAPHICS MODE INTO THE PI
55.  BUFFER SPACE   CHECK FOR ENOUGH FREE RAM IN THE BUFFER SPACE FOR THIS BUFFER  SAVE THE ADDRESS OF THIS HEADER IN THE PREVIOUS HEADER  LAST ENTRY FLAG   MAKE THIS HEADER THE LAST ENTRY   GET THE BUFFER NUMBER AND   SAVE IT IN THE HEADER   GET THE SIZE OF THE BUFFER AND   SAVE IT IN THE HEADER TOO   ENABLE TASK REGISTER 0   RESET MMU REGISTERS    USE X A TEMPORARY POINTER TO THE START OF BUFFER   SKIP PAST THE HEADER   GET THE SIZE OF THE BUFFER AND   ADD IT TO THE BUFFER POINTER WHICH NOW POINTS TO THE BUFFER END  PAST THE END OF THE BUFFER SPACE     OM  ERROR IF PAST END OF BUFFER SPACE    REDIMENSIONED ARRAY ERROR  DD     OUT OF MEMORY ERROR  0M    RESET THE STACK TO TEMPORARY LOCATON  ENABLE TASK REGISTER 0   RESET THE MMU REGISTERS   JUMP TO THE ERROR HANDLER    POINT X TO THE HGET MOVEMENT ROUTINE  SAVE THE MOVEMENT ROUTINE ADDRESS  HGET FLAG    HPUT MOVEMENT ROUTINE ADDRESS   SAVE THE MOVEMENT ROUTINE ADDRESS   HPUT FLAG   IS THE HI RES GRAPHICS MODE ENABLED     HR  ERROR IF NOT IN HI RES MODE   RAM HOOK   SAVE THE GET PUT FLAG   ALLOW HGET   HPUT  AS LEGAL SYNTAX   BRANCH IF NOT     GET THE NEXT CHARACTER FROM BASIC S INPUT LINE IF   WAS THERE  EVALUATE THE RECTANGLE BOUNDS   SYNTAX CHECK FOR COMMA   EVALUATE EXPRESSION  RETURN VALUE IN ACCB   SAVE THE BUFFER NUMBER   SET THE ACTION FLAG TO SHOW AN ACTION SPECIFIED   GET BASIC S CURRENT INPUT CHARACTER   BRANCH IF END OF LINE   NO ACTION SPECIFIED   SET THE ACTION FLAG TO SHOW THAT AN ACTION WAS SPECIFIED  SYNTAX CHECK
56.  BYTE   MOVE IT   BUMP COUNTER DOWN ONE   LOOP UNTIL DONE   ENABLE IRQ  FIRQ INTERRUPTS      MASTER IMAGES USED TO PROGRAM THE CUSTOM CHIP S PALETTE REGISTERS    IM PALET FCB  FCB  FCB      HSCREEN  HSCREEN CMPA  LBRN  BNE  CLRB  BRA  LE693 JSR  CMPB  LBHI  LE69C STB  CMPB  BNE  JMP  LE6A5 STB  LDX  SUBB  LDA  STA  CMPB  BGT  LDD  BRA  LE6B9 LDD  LE6BC STD  LDD  STD  LDB  BSR  JMP    18 36 11 7 63 31  9 38 0 18 0 63  0 18 0 38    3900  RAMLINK  LE693    LE69C  EVALEXPB  04  LLFUNC  RMODE        E6A5  ETTEXT  RMODE  LEGCB  01   ok  ORBYT  01  LE6B9   160  LEGBC  8320  HORDEF   96  VERDEF  H BCOLOR  CLRHIRES  SETGRAPH       43k I c dt d   Q r d Io dt    CHECK FOR END OF LINE   RAM HOOK   BRANCH IF NOT END OF LINE   IF END OF LINE  SET ARGUMENT TO ZERO   SET THE HSCREEN MODE   EVALUATE EXPRESSION  RETURN VALUE IN ACCB   ONLY 4 HSCREEN MODES ALLOWED   ILLEGAL FUNCTION CALL ERROR   SAVE THE HI RES GRAPHICS MODE   CHECK FOR MODE 0   BRANCH IF NOT HSCREEN 0   SETUP THE VIDEO MODE REGISTERS FOR COCO COMPATIBLE MODE  SAVE THE HI RES GRAPHICS MODE   POINT TO THE TABLE OF NUMBER OF BYTES HORIZONTAL ROW  CONVERT THE HI RES MODE FROM 1 4 TO 0 3   GET THE NUMBER OF BYTES HORIZONTAL ROW   AND SAVE IT   ONE OF THE FIRST TWO MODES    BRANCH IF NOT   HORIZONTAL CENTER OF 320 COORDINATE SCREEN    HORIZONTAL CENTER OF 640 COORDINATE SCREEN   SAVE AS HORIZONTAL DEFAULT COORD   VERTICAL CENTER COORDINATE   SAVE AS VERTICAL DEFAULT   GET THE BACKGROUND COLOR   CLEAR THE HI RES GRAPHICS SCREEN TO TH
57.  CLEAR THE LO RES VIDEO SCREEN  LC180 LDX  VIDRAM  LDA     4 60  LC185 STA       CMPX  VIDRAM 512  BCS LC185  LC18C LDA  COCO MMUEN MC3 MC2 MC1  STA INIT   TST  5  BEQ     LC19A  LDA     4 20  STA     VIDEOREG  LC19A LDX  PALETREG  LEAY                         LDB  16  BSR                 LEAS 901 5  JMP     RESVEC    GET THE INIT   IMAGE   FORCE THE ALTERNATE COLOR SET  RE SAVE THE INITO IMAGE   SKIP TO NEXT SET OF IMAGES  BUMP COUNTER   LOOP UNTIL DONE    POINT X TO THE START OF THE VIDEO DISPLAY  GREEN SPACE   PUT A GREEN SPACE ON THE LO RES SCREEN   AT THE END OF THE DISPLAY    NO    ENABLE THE NORMAL SPARE CHIP SELECT  EXTERNAL  FF40   WAS THE F1 KEY DEPRESSED    NO   ALTERNATE COLOR SET FLAG   FORCE THE ALTERNATE COLOR SET   POINT X TO THE PALETTE REGISTERS   POINT Y TO THE PALETTE REGISTER IMAGES   16 PALETTE REGISTERS   FILL THE PALETTE REGISTERS FROM THEIR IMAGE  REMOVE THE TEMPORARY STORAGE BYTE   JUMP TO THE COCO 2 RESET ENTRY POINT      COPY DATA POINTED TO BY  Y  FROM ROM TO RAM UNTIL THE ADDRESS IN     X  IS REACHED  PSHING AND PULING FROM U OR 5 WOULD BE MUCH MORE EFFICIENT    LC1AA STX  STS  LC1B1 CLR  LDD  LDX  LDU  LDS  CLR  STD  STX  STU  STS  LEAY  CMPY  BCS  LDS  RTS    15  02  15  00  SAM 30  n  502      94  Y   06  Y  SAM 31  n  502      04 Y  506     508     15  02  16181  15  00      MOVE ACCB BYTES FROM  Y  TO  X     MOVE XY LDA  STA  DECB  BNE  RTS      DECODE AND COPY THE AUTHOR S NAMES INTO RAM    LC1DE LDX  LEAY  LDB   LC1E7 LDA  COMA  STA  DECB 
58.  CODE    TOKEN  amp   E2          4    5    6    7    8    9                    ED  EE  EF  F            2  F3  F4  F5  F6  F7  F8   TOKEN    WIDTH E2  PALETTE E3  HSCREEN E4  LPOKE E5  HCLS   6  HCOLOR E7  HPAINT E8  HCIRCLE E9  HLINE EA  HGET       HPUT       HBUFF ED  HPRINT EE  ERR EF  BRK F    LOCATE       HSTAT F2  HSET 3  HRESET F4  HDRAW     F5  CMP F6  RGB F7            8  TOKEN  amp   A8  A9  AA  AB  AC   TOKEN    LPEEK A8  BUTTON A9  HPOINT AA  ERNO       ERLIN AC    POINT TO EXTENDED BASIC S COPYRIGHT MESSAGE  COPY A STRING FROM  X  TO CONSOLE OUT  MICROWARE S COPYRIGHT MESSAGE   COPY A STRING FROM  X  TO CONSOLE OUT    FUNDIS2  FDB LPEEK  LE288 FDB BUTTON  LE282 FDB HPOINT  LE284 FDB ERNO  LE286 FDB ERLIN    PRINT THE COPYRIGHT MESSAGE PATCH ENTERED FROM  80B2  ALINK12 LDX   180  7  JSR     STRINOUT  LDX   MWAREMS 1  JSR     STRINOUT  JMP L80B8    EXTENDED BASIC S WARM START REENTRY       PRINT THE DISK BASIC 2 0 COPYRIGHT MESSAGE PATCH ENTERED FROM    0  6    ALINK28 LDX  JMP     DISK20MS 1  LC0C9    POINT TO DISK BASIC 2 0 MESSAGE    COPY MESSAGE TO SCREEN AND WARM START DISK BASIC 2 0       PRINT THE DISK BASIC 2 1 COPYRIGHT MESSAGE PATCH ENTERED FROM  C  C6    ALINK29 LDX  JMP     LE313 2  LC  DC    POINT TO DISK BASIC 2 1 MESSAGE    COPY MESSAGE TO SCREEN AND WARM START DISK BASIC 2 1    B9    ORIGIN SPECTRAL ASSOC    REVISED 12 26 1999 WALTER K ZYDHEK    SUPER EXTENDED BASIC UNRAVELLED II    0865  0866  0867  0868  0869  0870  0871  0872  0873  0874  0875  
59.  CODE CHECKS TO DETERMINE IF A JUMP TO WARM START RESET CODE SHOULD BE DONE  THE JUMP TO A WARM START RESET WILL BE DONE IF 1  INT FLAG CONTAINS A  55 AND    2  RSTFLG CONTAINS A  55 AND  3  THE ADDRESS IN RSTVEC POINTS TO A  12  NOP INSTRUCTION    IF THE ABOVE CONDITIONS ARE MET  BASIC WILL BE WARM STARTED  IF INT FLAG DOES NOT CONTAIN  A  55  BASIC WILL BE COLD STARTED  IF INT FLAG DOES CONTAIN A  55  BUT 2  AND 3  ABOVE  ARE NOT MET  BLOCK 6 0  128K SYSTEM  OR BLOCK 0 0  512K SYSTEM  WILL BE LOADED INTO CPU  BLOCK 6  THIS WILL GIVE THE CPU A NEW DIRECT PAGE AND CHECKS 2  AND 3  ABOVE WILL BE  PERFORMED ON THIS NEW DIRECT PAGE TO SEE IF BASIC SHOULD BE WARM STARTED                  X            LDA INT FLAG GET THE INTERRUPT JUMP TABLE VALIDITY FLAG   CMPA 8555 CHECK FOR VALID INTERRUPT JUMP TABLE FLAG  BNE LCOF6 INTERRUPT JUMP TABLE IS NOT VALID  COPY ROM TO RAM  LDA RSTFLG GET THE SYSTEM RESET FLAG  CMPA 4955 CHECK FOR THE WARM START FLAG  BNE NOWARM BRANCH IF NO WARM START  LDX RSTVEC GET THE SYSTEM RESET VECTOR  LDA     GET THE FIRST BYTE POINTED TO BY THE RESET VECTOR  CMPA 8512 IS IT A NOP   LBEQ LC18C DON T COPY ROM TO RAM  ETC   NOWARM CLR     MMUREG PUT BLOCK 6 0  128K RAM  OR BLOCK 0 0  512K RAM  INTO CPU BLOCK 6  LDA RSTFLG  CMPA 4955 CHECK FOT THE WARM START FLAG  BNE LCOF1 BRANCH IF NO WARM START  LDX RSTVEC POINT X TO THE WARM START CODE  LDA     GET THE FIRST BYTE OF THE WARM START CODE  CMPA 8512 IS IT A NOP   LBEQ LC18C DON T COPY ROM TO RAM IF IT IS   LCOF
60.  COMB   COMPLEMENT LENGTH OF LINE JUST PAINTED   ADDD VD1 ADD TO LENGTH OF PARENT LINE   STD VD1 SAVE DIFFERENCE OF LINE JUST PAINTED AND PARENT LINE  BLE LECA5 BRANCH IF PARENT LINE IS SHORTER   JSR LE9B1 GO INCR HORIZONTAL COORD   JSR LECF1 CHECK FOR BORDER COLOR   BNE LEC9B BRANCH IF NOT BORDER COLOR   LDD 4 1   60 DECREMENT ONE FROM LENGTH OF DIFFERENCE  BRA LEC88   LINE AND KEEP LOOKING FOR NON BORDER COLOR  JSR LE9BF GET DECR HORIZONTAL COORD   JSR LED3A GET AND SAVE HORIZONTAL COORD   BSR LECC7 PAINT FORWARD TO MAX HORIZONTAL COORD OR BORDER  BRA LEC83 SAVE BLOCK OF PAINT DATA AND KEEP CHECKING    CHECK TO SEE IF THE CURRENT LINE EXTENDS FURTHER TO  THE RIGHT THAN THE PARENT LINE AND PUT A BLOCK OF    DATA ON THE STACK IF IT IS MORE THAN 2 PIXELS    PAST THE END OF THE PARENT LINE    JSR LE9B1 INC CURRENT HORIZONTAL COORD   LEAX D X POINT X TO THE RIGHT END OF THE PARENT LINE   STX HORBEG SAVE AS THE CURRENT HORIZONTAL COORDINATE   COMA   ACCA CONTAINS A NEGATIVE NUMBER CORRESPONDING TO THE NUMBER   COMB    OF PIXELS THE CURRENT LINE EXTENDS PAST THE RIGHT END   SUBD  1    OF THE PARENT LINE  CONVERT TO POSITIVE NUMBER AND BRANCH   BLE LECB7    IF THE LINE DOESN T EXTEND PAST THE END OF THE PARENT    TFR D X SAVE PORTION OF THE LINE TO THE RIGHT OF THE PARENT LINE  AS THE LENGTH   BSR LED15 SAVE BLOCK OF PAINT DATA IN THE DIRECTION OPPOSITE THE  CURRENT UP DN FLAG   JMP LEC4A PROCESS MORE PAINT DATA BLOCKS   JSR SELTASK   ENABLE TASK REGISTER 0   RTS   FROM HORIZONTAL 
61.  E676    E678  E67E  E684    E688  E68A  E68E  E698  E691  E693  E696  E698  E69C  E69E                  2  E6A5  E6A7  E6AA  E6AC  E6AE  E6B    E6B2  E6B4  E6B7  E6B9  E6BC  E6BE  E6C1  E6C3  E6C6  E6C8    E6CB    E6CF  E6D1  E6D4  E6D6    E6D8  E6DA    96  81  18  30  31  06  C1  23  C6  1A  13    E7  E7  1C  39    34  18  8D  35  18  1A  13  8D  39    C6  A6  A7  5A  26  1C  39    12  09  00    12  20  00    20    20    12  09  00    81  10  26  5F  20  BD        18  D7  C1  26  7E  D7  8E  Cg  A6  97  C1  2E  cc  20  cc  DD  cc  DD  F6  8D  7E    50    26  F6  20  8D    00  27    2C  18  24  86  A6  Cg  3F  02  3F  50    84  A4  AF    18  8E  0    10  8E  50    01    OF  80  AG    F9  AF    24  26  12    36  26  12    84    8E    24  26  12    00  21  03    09  B7  04  22  E6  00  03  EQ  E6  E6  01  85    9  01  05  0g  03  01  C7  0g  C9  FE  10  EQ    AG    05        02  36    E6  13    CE    E6    FF      B  00  00    09  00  00      B  00  00    19      B    cD    19    CB    AG    4g    60      B    4D    50      B    2C    78            07  12  26    24  12  26    07  12  26    72    AE    AG    3F  00    3F  00    3F  0g    1F  3F    1B  3F    1F  3F    LDA  CMPA  LBCC  LEAX  LEAY  LDB  CMPB  BLS  LDB  LE62A ORCC  SYNC    STB  STB  ANDCC  RTS    LE634 PSHS  LDY  BSR  PULS  LDY  ORCC  SYNC  BSR  RTS    LE648 LDB   LE64A LDA  STA  DECB  BNE  ANDCC  RTS      PALETTE COLORS FOR A COMPOSITE MONITOR    IM CMP FCB  FCB  FCB      PALETTE COLORS FOR AN RGB MONITOR    IM RG
62.  FFC5    BIT2  BIT3        4        5        6  BIT7    XVEN    APPENDIX A  MEMORY MAP    HORIZONTAL  HORIZONTAL  HORIZONTAL  HORIZONTAL  HORIZONTAL  HORIZONTAL    OFFSET ADDRESS  OFFSET ADDRESS  OFFSET ADDRESS  OFFSET ADDRESS  OFFSET ADDRESS  VIRTUAL ENABLE    ORIGIN SPECTRAL ASSOC  REVISED 12 26 1999 WALTER K ZYDHEK      HVEN ENABLES A HORIZONTAL SCREEN WIDTH OF 128 BYTES REGARDLESS OF THE    HRES BITS AND CRES BITS SELECTED  THIS WILL ALLOW A  VIRTUAL  SCREEN  SOMEWHAT LARGER THAN THE DISPLAYED SCREEN      WINDOW     OF ATTRIBUTE  OR 64     MMUREG      RELATIONSHIP BETWEEN DATA IN TASK REGISTER AND GENERATED ADDRESS      DATA FROM THE MMU IS THEN USED AS THE UPPER    THE USER CAN MOVE THIS     THE DISPLAYED SCREEN  BY MEANS OF THE HORIZONTAL OFFSET  BITS  IN CHARACTER MODE  THE SCREEN WIDTH IS 128 CHARACTERS REGARDLESS    RMB    16    BIT  CORRESPO    NDING    IF DOUBLE WIDE IS SELECTED      MEMORY MANAGEMENT UNIT REGISTERS  6 BITS     D5 D4    MEMORY ADDRESS   18 A17    FOR MEMORY ACCESS    PALETREG    RMB    ADDRESS    0000      2000      4000      6000      8000        000    XC000        000        0000    X2000      4000      6000      8000        000        000        000      16  DATA BIT    RGB OUTP  COMP  OU    RANGE  XLFFF  X3 FFF  X5 FFF  X7 FFF  X9FFF  XBFFF  XDFFF  XFFFF    XLFFF  X3 FFF  X5 FFF  X7 FFF  X9FFF  XBFFF  XDFFF  XFFFF    UT  TPUT          15                           A  0  0  0  0  1  1  1  1    A Ea pa pa pa pa pa pa  B HL                   COLOR
63.  FIRQ SERVICING ROUTINE ADDITIONS  8C28 CLR INT FLAG SET THE INTERRUPT FLAG TO NOT VALID  8C2B CLR PIA1 3 DISABLE PIA 1  PORT B INTERRUPTS    NON SELF STARTING ROM CARTRIDGE INITIALIZATION CODE  8C2E LDA  COCO MMUEN MC3 MC2 ENABLE MMU  16K INTERNAL 16K EXTERNAL ROM  8630 STA INITO ALSO ENABLE STANDARD SCS  CONSTANT RAM AT FE00  8C33 CLR         1   FORCE THE ROM MODE  8C36 RTS    PUT A CHARACTER ON THE SCREEN PATCH  PATCH22A  8C37 L8C37 PSHS          SAVE REGISTERS  8C39 LDX   CURPOS POINT X TO THE CURRENT CHARACTER POSITION  8C3B LDB                GET THE HI RES TEXT MODE  8C3D LBNE  F7AE BRANCH IF IN A HI RES TEXT MODE  ALINK22   8C41 L8C41 LDB  1 5 RESTORE ACCB TO ITS FORMER GLORY  8C43 JMP LA3 E GO BACK TO THE NON HI RES CHARACTER DISPLAY ROUTINE    CLS PATCH  PATCH23A  8C46 L8C46 PSHS CC SAVE THE ZERO FLAG  8C48 TST                CHECK THE HI RES TEXT MODE  8C4A BEQ L8C4F BRANCH IF NOT IN A HI RES TEXT MODE  8C4C JMP  F6AD GO DO A HI RES CLS  ALINK23   8C4F L8C4F PULS CC RESTORE THE ZERO FLAG  8C51 JMP LA913 GO DO A NON HI RES CLS  8054           NEW 2 0 INITIALIZATION CODE      2   1     2   LDA  BLOCK7 2   PUT THE  NORMAL  BLOCK BACK INTO LOGICAL BLOCK 2       2   STA   MMUREG 2    THE INITIALIZATION CODE AT    000 USES BLOCK 6 4   AQ2F LDX  PIA1 POINT X TO PIAL  A032 LDD       FF34 x  A035        1    CLEAR CONTROL REGISTER A ON           A037 CER  3 X CLEAR CONTROL REGISTER B ON           A039 DECA A REG NOW HAS  FE           5     rA BITS 1 7 ARE OUTPUTS  BIT    I
64.  FOR COMMA   CHECK THE GET PUT FLAG   BRANCH IF PUT    SYNTAX  ERROR   HGET MAY NOT SPECIFY AN ACTION   FIVE POSSIBLE ACTIONS   POINT TO THE ACTION ROUTINE ADDRESS   GET THE ACTION ROUTINE ADDRESS   COMPARE THE DESIRED ACTION TO THIS ROUTINE S TOKEN  SEARCH NO MORE   A MATCH WAS FOUND   DECREMENT COUNTER   LOOP UNTIL ALL ACTIONS CHECKED    SYNTAX  ERROR IF ILLEGAL ACTION DESIRED   SAVE THE ACTION ADDRESS   GET A CHARACTER FROM BASIC S INPUT LINE   PUT THE HBUFF BLOCK INTO LOGICAL ADDRESS SPACE OF TASK REGISTER 1  SELECT TASK REGISTER 1   GET THE BUFFER NUMBER   GET THE START AND END OF THIS BUFFER S DATA   GET THE STARING HORIZONTAL COORDINATE   COMPARE IT TO THE ENDING COORDINATE   BRANCH IF START     END COORDINATE   GET THE ENDING COORDINATE   SAVE IT AS THE STARTING COORDINATE   NOW SAVE THE STARTING COORDINATE AS THE ENDING COORDINATE  GET THE VERTICAL STARTING COORDINATE   COMPARE IT TO THE ENDING COORDINATE   BRANCH IF START     END COORDINATE   GET THE ENDING COORDINATE   SAVE IT AS THE STARTING COORDINATE   NOW SAVE THE STARTING COORDINATE AS THE ENDING COORDINATE      ROUND OFF THE HORIZONTAL START AND END COORDINATES TO AN EVEN NUMBER OF BYTES    LEE5D    LDA  LDB    HRMODE     F8    B25    GET THE HI RES GRAPHICS MODE  ROUND OFF MASK FOR HSCREEN 3  EIGHT PIXELS PER BYTE     SUPER EXTENDED BASIC UNRAVELLED II    2401  2402  2403  2404  2405  2406  2407  2408  2409  2418  2411  2412  2413  2414  2415  2416  2417  2418  2419  2420  2421  2422  2423  2424  2425  2426 
65.  FREE RANDOM FILE BUFFER AREA  0459 094A FCBADR RMB 2 START OF FILE CONTROL BLOCKS  0460 0946 DNAMBF RMB 8 DISK FILE NAME BUFFER  0461 9954 DEXTBF RMB 3 DISK FILE EXTENSION NAME BUFFER  0462 0957 DFLTYP RMB  DV  DISK FILE TYPE     BASIC  1 DATA  2                 0463    LANGUAGE  3 TEXT EDITOR SOURCE FILE  0464 0958 DASCFL RMB  DV  ASCII FLAG    CRUNCHED OR BINARY   FF ASCII  0465 0959 DRUNFL RMB RUN FLAG   IF BIT 1 1 THEN RUN  IF BIT 0 1  THEN CLOSE  0466   ALL FILES BEFORE RUNNING   0467 095A DEFDRV RMB DEFAULT DRIVE NUMBER  0468 0958 FCBACT RMB NUMBER OF FCBS ACTIVE  0469 0956 DRESFL RMB RESET FLAG    20 WILL CAUSE A              SHUT DOWN ALL FCBS  0470 0950 DLOADFL RMB LOAD FLAG  CAUSE A  NEW  FOLLOWING A LOAD ERROR  0471 095   DMRGFL RMB MERGE FLAG     N   MERGE   FF MERGE  0472 095   DUSRVC RMB 20 DISK BASIC USR COMMAND VECTORS  0473     DISK FILE WORK AREA FOR DIRECTORY SEARCH  0474   EXISTING FILE  0475 0973   973 RMB SECTOR NUMBER  0476 0974 V974 RMB 2 RAM DIRECTORY IMAGE ADDRESS  0477 0976   976 RMB FIRST GRANULE NUMBER  0478   UNUSED FILE  0479 0977 V977 RMB SECTOR NUMBER  0480 0978 V978 RMB 2 RAM DIRECTORY IMAGE ADDRESS  0481  0482 097A WFATVL RMB 2 WRITE FAT VALUE  NUMBER OF FREE GRANULES WHICH MUST BE TAKEN  0483 FROM THE FAT TO TRIGGER A WRITE FAT TO DISK SEQUENCE  0484 0976 DFFLEN RMB 2 DIRECT ACCESS FILE RECORD LENGTH  0485 097   DROTRK RMB 4 CURRENT TRACK NUMBER  DRIVES 0 1 2 3  0486 0982 NMIFLG RMB 1 NMI FLAG  Q DON T VECTOR  lt  gt   YECTOR OUT  0487 909
66.  Figure 5 are all of the allowed high resolution graphics modes  allowed on the CoCo 3  You will notice that not all possible combinations of the  CRES and HRES bits are given below  Only those combinations listed below are  guaranteed and any other combinations  although they may appear cute and useful ARE  NOT GUARANTEED TO BE SUPPORTED IN FUTURE VERSIONS OF THE COCO     HR2 HR1 HR   CR1 CRI Graphics mode  1 1 1 0 1 640 pixels  4 colors  1 0 1 0 0 640 pixels  2 colors  1 1 0 0 1 512 pixels  4 colors  1 0    0 0 512 pixels  2 colors  1 1 1 1 0 320 pixels  16 colors  1 0 1 0 1 320 pixels  4 colors  0 1 1 0 0 320 pixels  2 colors  1 1 0 1 0 256 pixels  16 colors  1 0 0 0 1 256 pixels  4 colors  0 1 0 0 0 256 pixels  2 colors  1 0 1 1 0 160 pixels  16 colors  0 1 1 0 1 160 pixels  4 colors  0 0 1 0 0 160 pixels  2 colors  1 0 0 1 0 128 pixels  16 colors  0 1 0 0 1 128 pixels  4 colors  0 0 0 0 0 128 pixels  2 colors    18    SUPER EXTENDED BASIC UNRAVELLED II SUPER HIGH RESOLUTION ORIGIN  SPECTRAL ASSOC  GRAPHICS REVISED 12 26 99 WALTER K ZYDHEK    Figure 5   High resolution graphics modes      The 320 pixel  2 color mode is not guaranteed to work at all possible  starting addresses of the high resolution screen     FF9A Border Register    Bits 6 7 Unused  Bits 0 5 BRDR Border color    This register controls the color of the border around the text or graphics  Screen  To set the border color  simply store the appropriate color code  composite  or RGB  in the register  The color
67.  GET HORIZONTAL END COORD  SUBTRACT OUT HORIZONTAL START COORD  GET ABSOLUTE VALUE    EVALUATE TWO SETS OF COORDINATES SEPERATED BY A MINUS  SIGN     PUT 1ST SET OF COORDINATES AT  HORBEG VERBEG   SECOND  IF NOTHING BEFORE MINUS SIGN  PUT    SET AT  HOREND VEREND      HORDEF VERDEF  DEFAULTS AT  HORBEG VERBEG       GET THE LAST HORIZONTAL END POINT   PUT AS START POINT   GET THE LAST VERTICAL END POINT   PUT AS VERTICAL START POINT   CHECK FOR MINUS SIGN     TOKEN   BRANCH IF NO STARTING COORDINATES GIVEN   GO GET THE STARTING COORDINATES   TOKEN FOR THE MINUS SIGN       DO A SYNTAX CHECK FOR A MINUS SIGN   SYNTAX CHECK FOR A       EVALUATE 2 EXPRESSIONS   TEMP STORAGE LOCS FOR END COORDS OF LINE COMMAND   GET END POINT COORDINATES   SYNTAX CHECK FOR A       SYNTAX CHECK FOR A       EVALUATE HORIZONTAL  amp  VERTICAL COORDINATES WITH RANGE CHECK  SYNTAX CHECK FOR     AND RETURN   POINT U TO HORBEG  USELESS GIVEN THE FOLLOWINF INSTRUCTION  POINT U TO HOREND   JUMP TO AN RTS  ONCE WAS A JUMP TO NORMALIZATION ROUTINE      POINT U TO ROUTINE WHICH WILL MOVE PIXEL ONE TO RIGHT    LEA16    LEA21    LDX     HORDEF  STX     HORBEG  LDX     VERDEF  STX     VERBEG  CMPA   AC  BEQ     LE9F    JSR 1    04  LDB     4 AC  JSR 1  26    JSR  LB26A  JSR 18734  LDY   HOREND  JSR 1  7  9  BRA 1          JSR  LB26A  JSR 1  7  2  JMP 18267  JSR     LE7AD  LDU   HOREND  JMP LE7BO  LDU      LEA25  LDB  HRMODE  SUBB 4901  ALSB   LDU B U   RTS   LDU      LEA45  RTS    POINT TO JUMP TABLE   GET HI RES
68.  GRAPHICS MODE VALUE  ADJUST OUT MODE 0  WHY NOT DECB   TWO BYTES PER ENTRY   GET JUMP ADDRESS    POINT U TO ROUTINE TO MOVE ABSOLUTE POS DOWN ONE ROW      JUMP TABLE OF ADDRESSES OF ROUTINES WHICH WILL MOVE THE    ABSOLUTE SCREEN ADDRESS POINTER ONE PIXEL TO THE RIGHT    LEA25  LEA27  LEA29  LEA2B    FDB  FDB  FDB  FDB    LEA34  LEA3D  LEA2D  LEA34    HSCREEN 1  HSCREEN 2  HSCREEN 3  HSCREEN 4      ENTER WITH ABSOLUTE SCREEN POSITION IN X  PIXEL MASK    IN ACCA   ADJUST X AND ACCA TO THE NEXT PIXEL TO THE RIGHT FOR HSCREEN 3    LEA2D    LEA33    LSRA  BCC  RORA  LEAX  RTS    LEA33    4601        SHIFT ONE        TO THE RIGHT   BRANCH IF SAME BYTE   SET BIT 7 OF ACCA IF JUST MOVED TO NEXT BYTE  ADD ONE TO SCREEN POSITION      ENTER WITH ABSOLUTE SCREEN POSITION IN X  PIXEL MASK IN ACCA      B19    ORIGIN SPECTRAL ASSOC    REVISED 12 26 1999 WALTER K ZYDHEK    SUPER EXTENDED BASIC UNRAVELLED II    1825  1826  1827  1828  1829  1830  1831  1832  1833  1834  1835  1836  1837  1838  1839  1840  1841  1842  1843  1844  1845  1846  1847  1848  1849  1850  1851  1852  1853  1854  1855  1856  1857  1858  1859  1860  1861  1862  1863  1864  1865  1866  1867  1868  1869  1870  1871  1872  1873  1874  1875  1876  1877  1878  1879  1880  1881  1882  1883  1884  1885  1886  1887  1888  1889  1890  1891  1892  1893  1894  1895  1896  1897  1898  1899  1900  1901  1902  1903  1904  1905  1906  1907  1908  1909  1910  1911  1912  1913  1914  1915  1916  1917  1918  1919  1920    EA34  EA35  
69.  HOREND and  HORBEG  The carry flag will indicate which was the  larger coordinate     B U EA16 POINT TO HI RES PIXEL MOVE ROUTINE   Point the U register  to the routine which will move the current pointer  X   to the right one pixel position for the current HSCREEN  mode     A X EA2D MOVE A HI RES PIXEL TO THE RIGHT   Adjust the X register  and ACCA one pixel position to the right in the 2 color  hi res graphics mode  Enter with the screen address in  the X register and the pixel mask in ACCA     A X EA34 MOVE A HI RES PIXEL TO THE RIGHT   Adjust the X register  and ACCA one pixel position to the right in the 4 color  hi res graphics mode  Enter with the screen address in  the X register and the pixel mask in ACCA     A X EA3D MOVE A HI RES PIXEL TO THE RIGHT   Adjust the X register  and ACCA one pixel position to the right in the 16 color  hi res graphics mode  Enter with the screen address in  the X register and the pixel mask in ACCA     B X EA45 ADJUST HI RES SCREEN POINTER DOWN A ROW   Move the X  register down one hi res graphic row  The number of  bytes per horizontal graphic row must be in HORBYT     U Y EBCB 16 BIT MULTIPLY   Multiply  unsigned  two 16 bit  numbers together  Enter with one number in ACCD and the  other in the X register  The four byte product will be  returned in the Y and U registers     A X FOOA 2 COLOR HI RES PRINT DRIVER   Convert the bit pattern in  ACCA into a hi res 2 color pixel pattern and put that  pixel pattern into the screen address poi
70.  II INTERRUPTS ORIGIN  SPECTRAL ASSOC  REVISED 12 26 99 WALTER K ZYDHEK    The Keyboard Interrupt    One of the exciting new interrupts included in the Color Computer 3 is the  keyboard interrupt  When set up properly  the user program can continue execution  without continually checking to see if a key is down  When a key is pressed  an  interrupt is generated  At this point  the interrupt servicing routine can  determine which key was pressed and process it     To set up the keyboard interrupt  several things must be done  First of all   the interrupt enable status registers must be turned on by setting the appropriate  bits in  FF98  as discussed above   Then  the keyboard interrupt itself must be  enabled by setting bit 1 of the appropriate interrupt enable register  Lastly  the  keyboard strobe lines must be reset by storing a    at  FF02  Once this has been  done  pressing a key on the keyboard or pressing a joystick button will generate an  interrupt     The Timer Interrupt    The timer is a 12 bit interval timer located at S FF94 SFF95  When a value is  loaded into the most significant byte  SFF94   the count is automatically started   The input clock is set to either 14 MHz or horizontal sync  as selected by setting  or clearing bit 5 of SFF91  As the count falls through zero  an interrupt is  generated  if enabled   and the count is automatically reloaded  Setting bit 5 of  the appropriate interrupt enable register enables the timer interrupt           The HBORD  VB
71.  INTCNV CONVERT          INTO AN INTEGER IN ACCB  LBRN     RAMLINK RAM HOOK  CMPB 4903 ONLY BUTTON NUMBERS 0 3 ALLOWD  LBHI ILLFUNC ILLEGAL FUNCTION ERROR  TFR B A SAVE BUTTON NUMBER IN ACCA  CLRB  COMB NOW ACCB    FF  LDX  PIA POINT TO THE KEYBOARD STROBE PIO  STB 502    SET THE COLUMN STROBE TO  FF   ALLOW ONLY BUTTONS TO BE CHECKED  LDB   X READ THE KEYBOARD ROWS  CMPB     F THE BUTTONS ARE ON THE BOTTOM FOUR ROWS  BEQ            BRANCH IF NO BUTTONS DOWN  LEAX  LE5D5 PC POINT TO THE BUTTON MASKING ROUTINES  ALSA  ALSA MULT ACCA BY FOUR   FOUR BYTES EACH MASKING ROUTINE  JMP A X JUMP TO THE APPROPRIATE MASKING ROUTINE      MASK OFF ALL BUT BUTTON 1  RIGHT JOYSTICK  LE5D5 ANDB 4501  BRA                 MASK OFF ALL BUT BUTTON 1  LEFT JOYSTICK  LE5D9 ANDB 4504       BRA               MASK        ALL BUT BUTTON 2  RIGHT JOYSTICK  ANDB  902  BRA               MASK        ALL BUT BUTTON 2  LEFT JOYSTICK  ANDB 3908                               BRANCH IF MASKED BUTTON NOT DOWN  LDD  1 IF BUTTON DOWN  RETURN A VALUE OF ONE  BRA LESEC  LESEA CLRA  CLRB RETURN A ZERO IF BUTTON IS NOT DOWN  LESEC JSR GIVABF CONVERT ACCD INTO A FLOATING POINT NUMBER IN           RTS    PALETTE  PALETTE CMPA   F7  RGB  TOKEN   LBRN     RAMLINK RAM HOOK  BNE LE600 NOT THE  RGB  TOKEN  CHECK FOR  CMP   JSR GETNCH GET THE NEXT CHARACTER FROM BASIC S INPUT LINE      RGB ENTRY POINT   SET THE PALETTE REGISTERS FOR DEFAULT RGB VALUES  LESFA LEAX  IM RGB PC POINT TO THE DEFAULT RGB PALETTE COLORS    BRA LE63
72.  LDD VCD GET VERTICAL COORD OF CENTER  ADDD  VEREND ADD VERTICAL DIFFERENCE  BCS LEB3D BRANCH IF OVERFLOW  CMPD VD5 COMPARE TO MAX VERTICAL COORD  BCS LEB3F BRANCH IF  lt  MAX VER  LEB3D LDD VD5 GET MAX VERTICAL COORD  LEB3F STD VEREND SAVE NEW VERTICAL SUBARC END COORD  TST VD8 CHECK FIRST TIME FLAG  BNE LEB48 DO NOT DRAWE A LINE FIRST TIME THROUGH    BECAUSE THE FIRST TIME YOU WOULD DRAW A LINE  FROM THE CENTER TO THE FIRST POINT ON THE CIRCLE  LBSR LE94E DRAW A LINE  LEB48 PULS A B GET END COORDS  LSR VD8 SHIFT FIRST TIME FLAG  BCS LEB53 DO NOT CHECK FOR END POINT AFTER DRAWING FIRST ARC  CMPD     9 COMPARE CURRENT POSITION TO END POINT  BEQ LEB5F BRANCH IF CIRCLE DRAWING IS FINISHED    INCREMENT SUBARC CTR  IF   7 THEN INC OCTANT CTR  LEB53 INCB INC SUBARC COUNTER  CMPB 3908    71         LEB5C BRANCH IF NOT  INCA INCR OCTANT COUNTER  CLRB RESET SUBARC COUNTER  ANDA   07 KEEP IN RANGE      0 7  ONCE ACCA ACCB  THIS WILL MAKE          0  50 THE END POINT WILL BE  60 6  AND THE CIRCLE ROUTINE WILL END  LEB5C JMP LEAB3 KEEP DRAWING THE CIRCLE  LEB5F RTS EXIT CIRCLE ROUTINE      GET MAXIMUM VALUE OF HORIZONTAL  amp  VERTICAL COORDINATES NORMALIZED FOR    PROPER GRAPHICS MODE  RETURN VALUES  HORIZONTAL IN VD3  VERTICAL IN VD5    LEB60 LDU  VD3 POINT U TO STORAGE AREA  LDX 5640 1 GET MAXIMUM HORIZONTAL COORD  STX  U SAVE IT  LDA HRMODE GET CURRENT GRAPHICS MODE  CMPA 4902 SEE WHICH MODE  BGT LEB73 BRANCH IF MODES 3 OR 4  LDX 5320 1 MAXIMUM VALUE FOR HORIZONTAL COORD IN MODES 1 
73.  LE3C2  LE3CF  LE424  LE426  1  430  LE43F  LE446  LE449  LE458  LE466  LE47D  LE488  LE496  LE49F  LE4BQ  LE4B3  LE4C7  LE4CE  LE4F4  LE4F9  LE4FA  LE51E  LE528  LE52B  LE58E  LE59A  LESAF  LE5D5  LE5D9  LE5E3  LE5EA  LE5EC  LE5FA  LE608  LE606  LE6  C  LE62A  LE634  LE648  LE64A  LE693  LE69C  LE6A5  LE6B9  LE6BC  LE6CB  LE6D6  LE6E4  LE6EF  LE7 5  LE7 D  LE7 E  LE711  LE718  LE72F  LE731    C2    E36A  E36B  E386  E3C2  E3CF  E424  E426  E430  E43F  E446  E449  E458  E466  E47D  E488  E496  E49F    4  0  E4B3  E4C7    4      E4F4  E4F9  E4FA              528  E52B  E58E  E59A            E5D5  E5D9  E5E3            E5EC  EDFA  E600  E606  E60C  E62A  E634  E648  E64A  E693  E69C  E6A5  E6B9  E6BC  E6CB  E6D6    6  4              705  E70D    70      711    718  E72F  E731    LE73B  LE759  LE75D  LE76A  LE77F  LE782  LE788  LE792  LE7AA  LE7AD  LE7B    LE7B2  LE7B9  LE7BF  LE7CD  LE7D    LE7D7  LE7E6  LE875  LE87B  LE899  LE8B3  LE8B4  LE8EB  LE8F2  LE8F4  LE8F6  1  905  1  906  1  913  1  921  LE92F  LE931  LE93E  LE94E  LE95D  LE96C  LE977  LE988  LE98D  LE9AD  LE9B1  LE9B8  LE9B9  LE9BF  LE9C6  LE9CC  LE9CD  LE9D1  LE9DB  LE9E1  LE9F    LEAQ4  LEAGA  LEA  D  LEA16  LEA21  LEA25  LEA27    E73B  E759  E75D  E76A  E77F  E782  E788  E792  E7AA  E7AD    7  6  E7B2  E7B9  E7BF  E7CD  E7D    E7D7  E7E6  E875  E87B  E899  E8B3  E8B4  E8EB  E8F2  E8F4  E8F6  E905  E906  E913  E921  E92F  E931  E93E  E94E  E95D  E96C  E977  E988  E98D  E9AD    9  1  E9B8    9  9            E9C6  E9
74.  LE7BO RTS    RTS    WASTED BYTE      EVALUATE TWO EXPRESSIONS   NORMALLY A HORIZONTAL AND VERTICAL COORDINATE    PERFORM COORDINATE SYNTAX RANGE CHECKS ON THE EXPRESSIONS    LE7B2 JSR  LDY  CMPB  BCS  LDB  CLRA  STD  LDA  CMPA  BGT  LDD  BRA  LDD  CMPD  BCS  LDD  STD  RTS    LE7B9    LE7BF    LE7CD  LE7D      LE7D7      THIS ROUTINE     PIXEL OFFSET   HCALPOS BSR  JMP      CALTABLE  CALTABLE FDB  FDB    LB734   HORBEG   192  LE7BF   192 1    502     HRMODE   902  LE7CD  5320 1  1  700   640 1  BINVAL  LE7D7  BINVAL  n    WILL CONVERT THE X Y COORDINATES   ACCA  OF THE BYTE ON THE SCREEN  LE7E6      U    G2BITBIX G4BITPIX G1BITPIX  G2BITBIX      POINT U TO THE PROPER CALPOS SUBROUTINE    LE7E6 LDU  LDA  SUBA  ALSA  LDU    RTS     CALTABLE  HRMODE    01    A U      TABLE OF 1 BIT PIXEL MASKS    PIX1MASK FCB  FCB     80  40  20  10  08  04   02  01      TABLE OF 2 BIT PIXEL MASKS    PIX2MASK FCB     C0  30  0C  03      TABLE OF 4 BIT PIXEL MASKS    PIX4MASK FCB      kkkkkkkkkkkk     F0  0F    EVALUATE TWO EXPRESSIONS  RETURN 1ST VALUE IN BINVAL  SECOND IN ACCB  POINT TO THE COORDINATE STORAGE VARIABLES   CHECK FOR MAXIMUM VERTICAL COORDINATE   BRANCH IF WITHIN RANGE   FORCE TO MAXIMUM VALUE IF OUT OF RANGE   CLEAR THE MOST SIGNIFICANT BYTE OF ACCD   SAVE THE VERTICAL COORDINATE   GET THE HI RES GRAPHICS MODE   IS MAXIMUM PIXEL WIDTH 320    NO   LOAD ACCD WITH MAXIMUM HORIZONTAL COORDINATE FORE 320 PIXEL WIDE  DO THE HORIZONTAL RANGE CHECK   LOAD ACCD WITH MAXIMUM HORIZONTAL COO
75.  LF255    LF25D    LF265    LF26D    LF275    LF27D    LF285    LF28D    LF295    LF29D    LF2A5    LF2AD    LF2B5    LF2BD    LF2C5    LF2CD    LF2D5    LF2DD    LF2E5    LF2ED    LF2F5    LF2FD    LF305    LF30D    LF315    LF31D    LF325    LF32D    LF335    LF33D    LF345    LF34D    LF355    LF35D    FCB      38  00  FCB 544 548   FCB      44  00  FCB 540 540   FCB      7C  08  FCB      44  6C   FCB      44  00  FOB 544 544   FCB      44  00  FCB 538 544   FCB      38  00  FCB      78  44   FCB      40  00  FOB 538 544   FCB  34   00  FCB 578 544   FCB      44  00  FCB 538 544   FCB  38   00  FCB  7C   10   FCB  10   00  FOB 544 544   FCB      38  00  FOB 544 544   FCB 510 500  FOB 544 544   FCB      44  00  FOB 544 544   FCB  44  00  FOB 544 544   FCB 510 500  FCB      7C  04   FCB      7C  08  FCB 538 520   FCB      38  00  FCB 500 540   FOB 500 500  FCB 538 508   FCB      38  00  FCB 510 538   FCB 510 500  FCB      00  10   FCB 500 500     LOWER CASE CHARACTERS  FCB 510 528   FCB 500 500  FCB 500 500   FCB      3C   00  FCB 540 540   FCB  58   00  FCB 500 500   FCB      38  00  FCB 504 504   FCB      34  00  FCB 500 500   FCB  38   00  FCB      08  14   FCB      10  08  FCB 500 500   FCB 504 538  FCB 540 540   FCB      44  00  FCB      00  10   FCB  38   00  FCB 500 504   FCB 544 538  FCB 540 540   FCB      48  00  FCB      30  10   FCB      38  00  FCB      00  00   FCB      54  00  FCB      00  00   FCB      44  00  FB      00  00   FCB  38   00  FCB      00  00   F
76.  LF8B1  LF8CD  LF8EB  LF8ED  LF963  LF9E3  LF9F6  LFAG6            LFE00  LFF00  LOCATE  LPEEK  LPOKE  MICROMS  MMUIMAGE  MMUREG  MOVE XY  MWAREMS  NEGACCD  NOWARM  OLDPTR  PALETTE  PALETREG  PALIMAGE  PATCH28  PATCH29  PATCH30    F6DC  F6Eg  F6E7    719    730  F74D  F75E  F761  F766  F772  F778  F787  F79F  F7A4  F7A8  F7C4  F7CC  F7D7  F7DE  F7E2  F862  F807  F827  F82E  F854  F860  F86A  F86E  F87B  F88A  F8AB  F8B1  F8CD  F8EB  F8ED  F963    9      F9F6        6                    FF00  F8D2  E573  E545  F702  C246  FFAG  C1D6  E2F8  FACC  CODE  0020            FFBg  C236  C0C6    009  C8B4    SUPER EXTENDED BASIC UNRAVELLED II    PATCHTAB  PIAG  PIAL  PIXIMASK  PIX2MASK  PIX4MASK  PIXELFIL  PRGGRAPH  PRGMMU  PRGTEXT  RAMLINK  RESTABLE  RESVEC  RGB  RSTFLG  RSTVEC  SAM  SCALE  SELBLOK    SELTASK   SELTASK1  SELTEXT  SETFLG  SETGRAPH  SETMMU  SETTEXT  SETVIDEO  5            SPARE1  SPARE2  STRINOUT  SUPERVAR  SYNCOMMA  TEMPPT  TMERROR  TMPSTACK  TMPSTK  TXTTAB  V BORDER  V TIMER    40   V41   V42   V44  VALTYP  VARDES  VCB   VCD   VCF   VD1   VD3       4   VD5   VD6   VD7   VD8   VD9  VERBEG  VERDEF    C256  FF00  FF20  E7F1  E7F9  E7FD  E742  E004  E006  E002  0000      6        27    674  0071  0072  FFC0  00  9        1            E119        5  0062      4    E997    019    082  E013  E015  E017  B99C  E000  B26D  000      151  DFFF  000    0019  FF9A  FF94  0040  0041  0042  0044  0006  003    00      00      00      0001  0003  0004  0005  0006  0007  0008  0009  OO
77.  ONE   CHECK FOR WRAP AROUND TO NEXT ROW   BRANCH IF NO WRAP AROUND   BUMP THE ROW NUMBER UP ONE   SAVE THE NEW ROW NUMBER   SET THE COLUMN NUMBER TO ZERO    SPACE CHARACTER  GET THE CURSOR ATTRIBUTES RAM IMAGE  SAVE A SPACE CHARACTER AND ADVANCE THE CURSOR POINTER ONE CHARACTER    GET THE CURSOR S COLUMN NUMBER  BUMP IT UP ONE   SAVE THE NEW COLUMN NUMBER   HAS IT WRAPPED AROUND     BRANCH IF NO WRAP AROUND   SAVE THE NEW CURSOR POINTER   SET THE CURSOR COLUMN NUMBER TO ZERO   BUMP THE ROW NUMBER UP ONE   GET THE CURSOR CHARACTER   ACCB ALREADY CONTAINS THIS VALUE   FORCE THE UNDERLINE ATTRIBUTE   SAVE AN UNDERLINED CHARACTER AS THE NEW CURSOR CHARACTER    POINT TO THE START OF THE HI RES TEXT SCREEN  GET THE NUMBER OF CHARACTERS PER ROW   40 CHARACTERS PER ROW    BRANCH IF 80 CHARACTERS PER ROW    GET A CHARACTER AND ATTRIBUTE FROM ONE ROW DOWN  AND MOVE THEM UP TO THE PRESENT ROW   PAST THE END OF THE HI RES TEXT SCREEN    NO  KEEP MOVING CHARACTERS AND ATTRIBUTES   FILL THE LAST ROW WITH SPACES    GET A CHARACTER AND ATTRIBUTES FROM ONE ROW DOWN  AND MOVE THEM UP TO THE PRESENT ROW   PAST THE END OF THE HI RES TEXT SCREEN    NO  KEEP MOVING CHARACTERS AND ATTRIBUTES    RESET THE COLUMN NUMBER TO ZERO   GET THE HIGHEST ROW NUMBER  ZERO IS LOWEST    AND SAVE IT AS THE CURRENT ROW NUMBER   SPACE CHARACTER   GET THE ATTRIBUTES RAM IMAGE   SAVE THE CURRENT CHARACTER POINTER   SAVE A CHARACTER AND ATTRIBUTES TO THE HI RES TEXT SCREEN  CHECK FOR THE END OF THE HI RES TEXT SCREEN
78.  PALETTE    D5 D4  R1 G1  I1 Ig    D3 D2    A16 A15    A14 A13  0 0  0   0  0 0  0   0  0 0  0   0  0 0  0   0          D3 D2  Bl R    P3 P2    D1    A14    D      A13    6 ADDRESS LINES  A13 A18     MMU LOCATION    FFAS            FFA2  FFA3  FFA4  FFAS  FFA6  FFA7    FFA8  FFA9  FFAA  FFAB  FFAC  FFAD  FFAE  FFAF    REGISTERS  6 BITS     D1  60    1    D    B    P        FOR COCO COMPATIBILITY  THE FOLLOWING SHOULD BE LOADED ON INITIALIZATION     RGB VALUES  FO    SAMREG    V  CLR  V  SET  VICLR  VISET  V2CLR  V2SET                    1        2  FFB3  FFB4  FFB5  FFB6  FFB7  FFB8  FFB9  FFBA  FFBB  FFBC  FFBD  FFBE  FFBF    EQU    RMB  RMB  RMB  RMB  RMB  RMB    REEN  ELLOW  LUE  ED  UFF     lt    gt        AGENTA  RANGE  LACK  REEN  LACK  UFF  LACK  REEN  LACK  RANGE              O  Z G       lt                     A paa nana    R PAL VERSION     IGNORE TABLE FOR COMPOSITE       SAM CONTROL REGISTERS    CLEAR COCO GRAPHICS MODE Vf    SET COCO GRAPHICS MODE         CLEAR COCO GRAPHICS MODE V1    SET COCO GRAPHICS MODE V1    CLEAR COCO GRAPHICS MODE V2    SET COCO GRAPHICS MODE V2    A14    SUPER       FFC6  FFC7  FFC8  FFC9  FFCA  FFCB  FFCC  FFCD  FFCE  FFCF  FFD   FFD1  FFD2  FFD3        4  FFD8  FFD9  FFDA  FFDE  FFDF    FFEQ    FFF2  FFFA  FFF6  FFF8  FFFA  FFFC  FFFE    EXTENDED BASIC UNRAVELLED II    FOCLR  FOSET              FISET  F2CLR  F2SET  F3CLR  F3SET  F4CLR  F4SET  F5CLR  F5SET  F6CLR  F6SET                     15        ROMCLR  ROMSET    SWI3  SWI2  FIRQ  I
79.  PLAY    DV   PV VOLUME LOW VALUE  PLAY    PV NOTE LENGTH  PLAY    PV TEMPO VALUE  PLAY    TV TIMER FOR THE PLAY COMMAND   TV DOTTED NOTE TIMER SCALE FACTOR   UPER EXTENDED BASIC HI RES MODE           PV DLOAD BAUD RATE CONSTANT    0 300  52   1200  UPER EXTENDED BASIC HI RES TEXT MODE    DV   PV DLOAD TIMEOUT CONSTANT    DV   PV ANGLE VALUE  DRAW     DV   PV SCALE VALUE  DRAW             X box     ox       co    PV DSKCON OPERATION CODE 0 3  PV DSKCON DRIVE NUMBER 0 3  PV DSKCON TRACK NUMBER 0 34  PV DSKCON SECTOR NUMBER 1 18  PV DSKCON DATA POINTER   PV DSKCON STATUS BYTE           ok    oko    4    EMPORARY FCB POINTER       SPARE  UNUSED VARIABLES      4    SUPER EXTENDED BASIC UNRAVELLED II APPENDIX A ORIGIN SPECTRAL ASSOC       0350  0351  0352  0353  0354  0355  0356  0357  0358  0359  0360  0361  0362  0363  0364  0365  0366  0367  0368  0369  0370    Q                Q                                                g               MEMORY MAP REVISED 12 26 1999 WALTER K ZYDHEK     BASIC  EXBASICDOSBASIC  SW3VEC RMB 3  XXXX            3B3B SWI3 VECTOR  SW2VEC RMB 3             XXXX  3B3B SWI2 VECTOR  SWIVEC RMB 3                                SWI VECTOR  NMIVEC RMB 3  XXXX            D7AE NMI VECTOR  IRQVEC RMB 3  A9B3  894C  D7BC IRQ VECTOR  FRQVEC RMB 3  ABF6        6  ABFE FIRQ VECTOR  TIMVAL  USRJMP RMB 3 JUMP ADDRESS FOR BASIC S USR FUNCTION     RMB 2 TIMER VALUE FOR EXBAS    RMB 1 UNUSED BY EXBAS OR DISK BASIC  RVSEED RMB 1   FLOATING POINT RANDOM NUMBER SEED EX
80.  POINTER IS SAVED IN BINVAL BY THE READ COMMAND  SAVE NEW ADDRESS FOR BASIC S INPUT POINTER   SAVE THE ON ERROR DESTINATION LINE NUMBER IN ACCD   GO TRANSFER CONTROL TO THAT LINE NUMBER    38 HIRES GRAHICS ERROR  39 HIRES TEXT ERROR    SAVE THE CONTENTS OF ACCD    RESET  CONT  ADDRESS SO THAT YOU CAN T CONTINUE  RESET THE ON BRK ADDRESS TO ZERO  NON INITIALIZED  RESET THE ON ERROR ADDRESS TO ZERO  NON INITIALIZED  RESET THE ERLIN LINE NUMBER TO ZERO  NO ERROR  INDICATES NO ERROR   RESET ERROR NUMBER TO NO ERROR   RESTORE ACCD   JUMP TO THE END OF THE NEW COMMAND   AD43     CLEAR THE MS BYTE OF ACCD   GET THE ERROR NUMBER   IS IT A REAL ERROR   BRANCH IF YES   NOW ACCD    FFFF IF NOT A REAL ERROR  CONVERT ACCD TO FLOATING POINT   CHECK FOR ERROR NUMBER  F1   BRANCH IF NOT ERROR  F1   CONVERT TO 7 2  UNDEFINED LINE NUMBER   DIVIDE ERROR NUMBER BY 2   CONVERT ACCD INTO A FLOATING POINT NUMBER    GET THE LINE NUMBER WHERE THE ERROR OCCURRED  CONVERT IT INTO A FLOATING POINT NUMBER    LOOP IN THE DIRECT MODE PATCH ENTERED FROM  AC73    SET UP HI RES TEXT MODE IF ENABLED   SET UP VARIOUS PRINT PARAMETERS   DISABLE IRQ  FIRQ   GET PUT BUFFER BLOCK   PUT IT INTO LOGICAL BLOCK 0   NO HGET HPUT BUFFERS USED FLAG   SET THE HGET HPUT BUFFER SPACE TO SHOW NO BUFFERS IN USE  GET NORMAL LOGICAL BLOCK 0   PUT BACK INTO THE LOGICAL ADDRESS SPACE  ENABLE IRQ  FIRQ   RE ENTER THE MAIN STREAM CODE   AC76     CHECK THE ERROR BREAK FLAG  BRANCH IF ERROR BROUGHT US HERE  GET THE ON BRK SOURCE LINE 
81.  SELTASKO RESET TASK REGISTER 0 TO BE THE ACTIVE TASK REGISTER    RTS      HSET HRESET A PIXEL  ENTER W X POINTING TO THE BYTE CONTAINING THE PIXEL AND    ACCA POINTING TO THE MASK FOR THE PROPER PIXEL    B15    ORIGIN SPECTRAL ASSOC    REVISED 12 26 1999 WALTER K ZYDHEK    SUPER EXTENDED BASIC UNRAVELLED II    1441  1442  1443  1444  1445  1446  1447  1448  1449  1450  1451  1452  1453  1454  1455  1456  1457  1458  1459  1460  1461  1462  1463  1464  1465  1466  1467  1468  1469  1470  1471  1472  1473  1474  1475  1476  1477  1478  1479  1480  1481  1482  1483  1484  1485  1486  1487  1488  1489  1490  1491  1492  1493  1494  1495  1496  1497  1498  1499  1500  1501  1502  1503  1504  1505  1506  1507  1508  1509  1510  1511  1512  1513  1514  1515  1516  1517  1518  1519  1520  1521  1522  1523  1524  1525  1526  1527  1528  1529  1530  1531  1532  1533  1534  1535  1536      792    794    796    798    799  E79B  E79D  E79F    7  1  E7A3  E7A5  E7A7  E7A9  E7AA  E7AD      7  0  E7B1    E7B2  E7B5  E7B9  E7BB  E7BD  E7BF    7      E7C2    7  4    7  6  E7C8  E7CB  E7CD    700    703    705    707    709    E7DA  E7DC    E7DE  E7E4    E7E6  E7E9  E7EB  E7ED  E7EE  E7F      E7F1  E7F7    E7F9    E7FD    E7FF  E801  E803  E805  E806  E809  E80B  E80D  E80E  E80F  E810  E811  E812  E813  E815  E817  E819  E81C  E81E    E820  E822  E824    E6  34  1F  43  A4  D4  34  AA  A7  AG  9A  97  39  BD  CE    39  39    BD  10        25  C6  4    ED  96  81  2E        20        10  25  
82.  UNRAVELLED II    0223  0224  0225  0226  0227  0228  0229  0230  0231  0232  0233  0234  0235  0236  0237  0238  0239  0240  0241  0242  0243  0244  0245  0246  0247  0248  0249  0250  0251  0252  0253  0254  0255  0256  0257  0258  0259  0260  0261  0262  0263  0264  0265  0266  0267  0268  0269  0270  0271  0272  0273  0274  0275  0276  0277  0278  0279  0280  0281  0282  0283  0284  0285  0286  0287  0288  0289  0290  0291  0292  0293  0294  0295  0296    00  6    00A8                            AD  0               00  0  00  2  0083  00  4  00  5  00  6  00  7  00  9        00      00  0  00      00  1  0062  0063  0065  00  7  0069    00      00CD  00      0001  0003  0004  0005  0006  0007  0008  0009      DA        DB      DC      DE      DF  0       00  1  00  2  00      OBES  00  6  00  6  00  7  00  7  00  8  00  9          00               0                 DOFO    00  1                7        1                  CHARAD 2         JMP               VAB RMB  VAC RMB  VAD RMB  VAE RMB    EXTENDED BASIC VARIABLES  TRCFLG RMB  USRADR RMB 2  FORCOL RMB  BAKCOL RMB  WCOLOR RMB  ALLCOL RMB  PMODE RMB  ENDGRP RMB 2  HORBYT RMB  BEGGRP RMB 2  GRPRAM RMB  HORBEG RMB 2  VERBEG RMB 2  CSSYAL RMB  SETFLG RMB  HOREND RMB 2  VEREND RMB 2  HORDEF RMB 2  VERDEF RMB 2    EXTENDED  VCB RMB 2  VCD RMB 2  VCF RMB 2  VD1 RMB 2  VD3 RMB      4         VD5 RMB  VD6 RMB  VD7 RMB  VD8 RMB  VD9 RMB  VDA RMB  CHGFLG RMB  TMPSTK RMB 2  OCTAVE RMB  VOLHI RMB  VOLLOW RMB  NOTELN RMB  TEMPO RMB  
83.  VERTICAL START COORDINATE      DRAW A SERIES OF HORIZONTAL LINES FROM VERTICAL START TO VERTICAL END    LE8F6 JSR  LDX  CMPX  BEQ  BCC  LEAX  BRA  1  905 RTS    LE906  VERBEG  VEREND  LE905  LEBF2  4601      LE8F4    DRAW A HORIZONTAL LINE   GET START VERTICAL COORD   COMPARE TO END VERTICAL COORD   RETURN IF EQUAL   BRANCH IF START HORIZONTAL  gt  END HORIZONTAL  MOVE HORIZONTAL COORD DOWN ONE   KEEP DRAWING LINES      DRAW A HORIZONTAL LINE FROM HOREND TO HORBEG AT VERTICAL COORD VERBEG  COLOR IN ALLCOL    LE906 LDX  PSHS  JSR  BCC  LDX  STX  LE913 TFR  LEAY  JSR  PULS  STU  LBSR  LE921 STA  JSR  LDA  JSR  LEAY  BNE  RTS  LE92F PULS      DRAW A VERTICAL LINE FROM VEREND TO VERBEG AT    LE931 LDD  PSHS  JSR  BCC  LDX  STX   LE93E TFR  LEAY  JSR  PULS  STU  LBSR  BRA      DRAW A LINE  LE94E LDY  JSR  BEQ  BCC  LDY  LE95D PSHS  LDU  JSR  BEQ  BCC  LDU  LE96C CMPD  PULS  BCC  EXG  EXG  LE977 PSHS  PSHS  LSRA  RORB  BCS  CMPU  BCS  SUBD  LE988 PSHS    HORBEG  X   LE9DB  LE913  HOREND  HORBEG  D Y   01  Y  HCALPOS  U  HORBEG  LEA16    07  LE788    07      U    01 Y  LE921    A B    VERBEG         LE9CD  LE93E  VEREND  VERBEG  D Y   01  Y  HCALPOS  U  VERBEG  LEA21  LE921    FROM  HORBEG  VERBEG  TO  HOREND    LE9B8  LE9CD  LE906  LE95D   LE9C6          LE9B1  LE9DB  LE92F  LE96C   LE9BF  E    LE988   LE9B9  LE988   1  X B A    GET STARTING COORDINATES   SAVE  EM   GET ABSOLUTE VALUE OF HOREND HORBEG  HORIZONTAL COORD   BRANCH IF END 2 START   GET END COORD   MAKE IT THE START CO
84.  WORKING COLOR  BSR PIXELFIL FILL ALL PIXELS IN A BYTE WITH THE WORKING COLOR  STB ALLCOL SAVE THE FILLED WITH WORKING COLOR BYTE    RTS      FILL ACCB WITH PIXELS OF THE COLOR CONTAINED IN ACCB  PIXELFIL PSHS X    LDA HRMODE GET THE HI RES GRAPHICS MODE   SUBA 4901 CONVERT 1 4 TO 0 3   LDX  LE759 POINT TO THE TABLE OF PIXEL MASKS   ANDB A X KEEP ONLY ONE PIXEL S WORTH OF COLOR INFORMATION   LDA HRMODE   BOTH OF THESE INSTRUCTIONS   SUBA 49601   ARE SUPERFLUOUS   LDX  LE75D POINT TO THE TABLE OF MULTIPLIERS   LDA A X GET THE APPROPRIATE MULTIPLIER   MUL NOW THE COLOR INFORMATION IS IN EVERY PIXEL IN THE BYTE  PULS X PC      PIXEL MASKS FOR THE HI RES GRAPHICS MODES  LE759 FCB  03  0F  01  03      MULTIPLIERS TO SPREAD HI RES PIXELS THROUGH AN ENTIRE BYTE  LE75D FCB  55  11  FF  55      HSET   HSET LDA   01 HSET FLAG  BRA LE76A     HRESET   HRESET CLRA HRESET FLAG    LBRN     RAMLINK    LE76A TST HRMODE IS THE HI RES GRAPHICS MODE ENABLED     BEQ LE6EF HR  ERROR IF HI RES MODE NOT ENABLED   STA SETFLG SAVE THE HSET HRESET FLAG   JSR LB26A SYNTAX CHECK FOR       JSR LE7AA EVALUATE TWO EXPRESSIONS   TST SETFLG CHECK THE HSER HRESET FLAG   BNE LE77F BRANCH IF HSET   JSR LE731 SET THE WORKING COLOR AND ALL PIXEL BYTE   BRA LE782  LE77F JSR LE718 GET THE HSET COLOR  LE782 JSR LB267 SYNTAX CHECK FOR       JSR              5 LOAD X WITH PIXEL BYTE ADDRESS  ACCA WITH PIXEL MASK  LE788 JSR     SELTASK1 MAKE TASK REGISTER 1 THE ACTIVE TASK REGISTER   JSR LE792 SET OR RESET A PIXEL   JSR
85.  X CONTAINS THE ADDRESS OF THE START OF THE ROW CONTAINING A PIXEL  GET THE HORIZONTAL COORDINATE     DIVIDE HORIZONTAL COORDINATE BY TWO   THERE ARE 2 PIXELS PER BYTE    ACCD CONTAINS THE COLUMN OFFSET TO THE PIXEL IN BYTES   ADD THE COLUMN OFFSET   X POINTS TO THE BYTE CONTAINING THE PIXEL  GET THE LEAST SIGNIFICANT BYTE OF THE HORIZONTAL COORDINATE   KEEP BITS 0 WHICH IS THE PIXEL POSITION IN THE BYTE   POINT TO THE TABLE OF 16 COLOR PIXEL MASKS   GET THE CORRECT PIXEL MASK   RESTORE THE REGISTERS    CHECK FOR HI RES GRAPHICS MODE    HR  ERROR IF NOT GRAPHICS   SYNTAX CHECK FOR       EVALUATE TWO EXPRESSIONS  X Y COORDS   SYNTAX CHECK FOR       SELECT TASK REGSTER 1   POINT X TO PIXEL  ACCA CONTAINS MASK   PUT MASK IN ACCB   MASK OFF ALL BUT DESIRED PIXEL   SHIFT MASK TO THE RIGHT   STOP SHIFTING IF DATA IS RIGHT JUSTIFIED  SHIFT PIXEL TO THE RIGHT   KEEP SHIFTING UNTIL DATA IS RIGHT JUSTIFIED  CONVERT ACCB INTO A FLOATING POINT NUMBER  SELECT TASK REGISTER 6    CHECK HI RES GRAPHICS MODE    HR  ERROR IF NOT GRAPHICS   RAM HOOK   CHECK FOR       GO LOOK FOR START AND END POINTS  CHECK FOR MINUS SIGN TOKEN   BRANCH IF NO STARTING POINTS GIVEN  CHECK FOR  Q  SIGN   GO DO A SYNTAX CHECK   GET STARTING AND ENDING COORDINATES  GET ENDING HORIZONTAL COORDINATE   PUT IN LAST USED HORIZONTAL END POINT  GET ENDING VERTICAL COORDINATE   PUT IN LAST USED VERTICAL END POINT  DO A SYNTAX CHECK FOR A COMMA   PRESET TOKEN    BRANCK IF YES   PSET TOKEN     SYNTAX  ERROR IF NOT PSET OR PRE
86.  a section called ROM ROUTINES  In this section you will find a summary of  the official ROM calls which may be made  These official calls are located at         0 and are made by indirect subroutine calls to the addresses given  No  mention is made of a suspicious looking table of addresses located at address   E008 which is the beginning of the new code added to the Basic ROM by the  Color Computer 3  These addresses are similar to a table of addresses at the  beginning of the Disk Basic ROM which is only partially documented  It is the  opinion of the author that the Super Extended table  as well as the Disk Basic  table  will be maintained by Tandy and should be used as if they were supported  by Tandy  The reader is cautioned that this is just the OPINION of the author  and is by no means the official stance of Tandy     SUPERVAR    E090   This is the address of the direct page variables used by Super Extended Basic   It is not the address of a routine     ENTRY CONDITIONS  Not applicable    EXIT CONDITIONS  Not applicable    PRGTEXT    E802    Program            and the video control registers with their RAM images according  to the value contained in HRWIDTH  Basic  unmodified by the user  will do the  following  1  If HRWIDTH   0  set up 32 column CoCo compatible mode  2  If  HRWIDTH   1  set up the 40 column hi res text mode  3  If HRWIDTH   anything  else  set up the 80 column hi res text mode  A RAM hook exists in this routine  which will allow the user to modify i
87.  amp  4    ORIGIN SPECTRAL ASSOC  REVISED 12 26 1999 WALTER K ZYDHEK    LEA34 LSRA  LSRA  BCC LEA33  LDA  5  0  LEAX  01     RTS    SHIFT MASK ONE BIT TO THE RIGHT  DO IT AGAIN   BRANCH IF SAME BYTE   SET PIXEL  3 IF NEW BYTE   ADD ONE TO SCREEN ADDRESS      ENTER WITH ABSOLUTE SCREEN POSITION IN X  PIXEL MASK IN ACCA      ADJUST X AND ACCA TO THE NEXT PIXEL TO THE RIGHT FOR HSREEN 2    LEA3D COMA  CMPA   F    BNE LEA44  LEAX  01     LEA44 RTS      ROUTINE TO MOVE DOWN ONE ROW      ENTER WITH ABSOLUTE SCREEN ADDRESS IN X    LEA45 LDB               ABX  RTS     HCIRCLE   HCIRCLE TST             LBEQ LEGEF  LBRN     RAMLINK  CMPA       BNE LEA59  JSR                LEA59 JSR 1    60  JSR 1    04  JSR     LE7AD  LDX      STX VCB  LDX      02 U  STX VCD  JSR SYNCOMMA  JSR 18730  LDU           STX  U  JSR 1  7  0  LDA     4 01  STA     SETFLG  JSR 1  718  LDX 45100  JSR GETCCH  BEQ     LEA95  JSR                   JSR LB141  LDA               ADDA 4508  STA FPGEXP  JSR 18740   LEA95 LDA               CMPA 4902  BHI LEA9F  TFR X D  LEAX D X   LEA9F STX     VD1  LDB     4 01  STB     SETFLG  STB       JSR 1    7    PSHS        JSR 1    7    STD     VD9  PULS A B   LEAB3   5  5        LDX HOREND  STX     HORBEG  LDX VEREND  STX     VERBEG  LDU  LEB9B  ANDA 4501  BEQ     LEAC7  NEGB  ADDB 4508   LEAC7     ALSB  ALSB  LEAU B U  PSHS U  JSR LEBBD  PULS U  LEAU   62 U  PSHS X  JSR  LEBBD  PULS Y  LDA  S  ANDA 4509  BEQ     LEAE7  CMPA 4903  BEQ     LEAE7  EXG X Y   LEAE7 STX HOREND      
88.  data    This is a dramatic change and offers a flexibility that didn t exist before   First of all  the number of available colors as no longer limited to the resolution  of the screen  However  even more exciting is what happens when you change palette  registers  When a new value is stored in a palette register  say palette 1  all  pixels that correspond to palette 1 change colors  This allows you to change the  colors on large areas of the screen by simply changing one byte  or executing one  PALETTE command   The possibilities with this method of changing colors are  immense  including limited animation    Even though there are 16 palette registers  not all of the palette registers  may be active  For all 16 registers to be active  you must be in a 16 color hi res  graphics mode  It you are in a hi res four color mode  only the first four palette  registers are active and if you are in a hi res two color mode  then only the first  two palette registers are active  Figure 11 shows the configuration of the pixels  in the byte     Graphic byte 16 color mode 4 color mode 2 color mode  Bit 7 PA3  pixel 1 PAl  pixel 1         pixel 1  Bit 6     2  pixel 1         pixel 1         pixel 2  Bit 5 PAl  pixel 1 PAl  pixel 2 PAQ  pixel 3  Bit 4         pixel 1         pixel 2         pixel 4  Bit 3 PA3  pixel 2 PAl  pixel 3         pixel 5    24    SUPER EXTENDED BASIC UNRAVELLED II    COLORS AND PALETTES       ORIGIN     SPECTRAL ASSOC    REVISED 12 26 99 WALTER K ZYDHEK    PAQ  pi
89.  the bit in the appropriate enable  register  For example  in order to enable the timer to trigger an IRQ interrupt   simply store     20 in  FF92  It is up to the interrupt servicing routine to  determine what caused the interrupt  which is done by reading the appropriate  status register  For example  if we have set up the interrupts to trigger an FIRQ  interrupt when a key is pressed  the service routine should contain the following  code to make sure the keyboard generated the interrupt     LDA  FF93 READ INTERRUPT STATUS REGISTER  BITA  2 CHECK FOR KEYBOARD INTERRUPT  BEQ BRANCH IF NOT KEY    In addition to determining the source of the interrupt  reading the status  register resets the interrupt flags  those same flags that told you where the  interrupt originated   The programmer must preserve the contents of the status  register if you wish to make use of their contents after the status register has  been read    The GIME chip interrupts are triggered on the high to low transition of the  interrupt source when the enable line is high  The design of the interrupt input  circuitry also causes an interrupt to occur if the interrupt source is high when  the enable line is brought low  This will cause a spurious interrupt  which your  interrupt handling routines must detect and reject  A current anomaly in the  interrupt circuitry causes the interrupt status register to be cleared when a zero  is written to the interrupt enable bit     27    SUPER EXTENDED BASIC UNRAVELLED
90.  used this format  a   was used  This was done in the original  but  not all comments stuck to this format     2  I have renumbered all the line numbers  Each Appendix  with code  starts at  Line 0001         Some spell checking  and context checking was done to verify accuracy     4  I used the Letter Gothic MT Bold Font  This allows for display of Slashed  Zeros  I thought it important to be able to distinguish between 0 and 0   5  All the Hex code now shows the Opcodes        There were other minor changes that were made to make viewing a little  better  If any discrepancies arise  please let me know so that I may correct the  errors  I can be contacted at  mailto wzydhek internetcds com       Special Thanks to Jean Francois Morin for pointing out those Oops to me   Id like to also thank those who have either given me  or loaned me their copy of  the original Unravelled Series     About Me    My name is Walter K  Zydhek  I ve been a Computer Hobbyist since 1984 when I  received my 1 Tandy Color Computer 2 for Christmas  It had 32K of ram  Cassette   and one Cartridge  I quickly learned to program in Basic and then moved into  Assembly     Over the next few years  I saved to purchase the Multi Pak Interface  Disk  Drives  Modem  0S 9  and various Odds and Ends     I moved to Tampa Florida and in the move  My CoCo was damaged  I then  replaced it with the CoCo 3  WOW what a difference  I added the 512K Ram Upgrade  A  CM 8 color monitor  and joined the Carolwood CoCo Club   
91.  was stolen from me  And the CoCo  world was just a memory     In the last 2 Years  my love for the CoCo has re kindled  I have been  partially content to use a CoCo Emulator for my PC  I tried the CoCo 2 Emulator by  Jeff Vavasour  This was OK  but a lot was left out  I then purchased the CoCo 3  Emulator  Much better  but would not use Double Sided Disks   Although it did have  a Virtual Hard Drive for use in 05 9     I then wanted to better the CoCo Emulator  add use of PC hardware  Add  Double Sided Disk functionality  and even make it Windows Native  instead of a Dos  Box  Unfortunately I could not get the source code for the CoCo 3 Emulator     I then turned to Paul Burgin s Dragon 2 Coco 2 Emulator  This had source code  available and with a small  20 00 donation  was able to get the source code to  additional portions of his program  I have tinkered with it  but came to understand  that I needed more info on the CoCo  I have looked all over the net and found quite  a lot of useful information  but what I really needed was the Unravelled Series     I was able to find someone that had Extended Basic Unravelled and Disk Basic  Unravelled  He sent them to me for free   And a friend of mine had Super Extended  Basic Unravelled  A copy I gave him years ago   Unfortunately  the books are not in  the best of shape  and the type is hard to read  and with so many people looking  for the books  I decided to re do them in Electronic format     I ask everyone that obtains copies o
92.  were derived from the related commands in Extended  Basic  Though mimicking these routines is not necessarily a bad philosophy  the  Extended Basic routines were never designed to handle 640 pixel wide screens   Unfortunately  very little was done to increase the resolution of the routines  The  most obvious example of this is the HCIRCLE command  which has little more detail  on the super high resolution screens than on the low resolution screens     Inconsistencies  In upgrading the graphics commands to work on the Color Computer 3 some of    the conventions used in Extended Basic were ignored  The most apparent example of  this is the HSCREEN command  Extended Basic requires that you set up the graphics    31    SUPER EXTENDED BASIC UNRAVELLED II SUPER EXTENDED BASIC ORIGIN  SPECTRAL ASSOC  REVISED 12 26 99 WALTER K ZYDHEK    mode using the PMODE command  then  if you wish  clear the screen using the PCLS  command  and lastly display the screen with the SCREEN command  Super Extended  Basic has replaced all of these commands with one command  HSCREEN  which sets the  mode  clears the screen  and displays the screen  This does not allow you to view a  screen loaded in from disk or cassette  create the screen before viewing it  which  would be helpful with 32K screens   or switch between the text and graphics modes  without redrawing the graphics screen    The original programmers of Basic also went to great lengths to allow you to  draw the same picture on a higher resolut
93. 0    10    00    00    40    44    18    40    44    08    44    44    40    44    94    10    10    10    00    10    00    4C    44    24    44    24    40    40    44    44    10    44    LDA    ALSA  ALSA  ALSA    STA  RTS    VERBEG 1    VERBEG 1    DISASSEMBLY OF SUPER EXTENDED BASIC 1 1      HI RES CHARACTER GENERATOR  ROM      SPECIAL CHARACTERS AND NUMBERS    LF 9D              5    LF AD    LF0B5    LF0BD    LF0C5    LF  CD    LF  D5    LF  DD                                LF  F5    LF  FD    LF195    LF19D    LF115    LF11D    LF125    LF12D    LF135    LF13D    LF145    LF14D    LF155    LF15D    LF165    LF16D    LF175    LF17D    LF185    LF18D    LF195    LF19D    LF1A5    LF1AD    LF1B5    LF1BD    LF1C5    LF1CD    LF1D5    LF1DD    LF1E5          FCB 500 500   FCB      00  08  FCB      10  10   FCB 510 500  FCB 528 528   FCB 500 500  FCB 528 528   FCB  28   00  FOB  16   3C   FCB 510 500  FCB 560 564   FCB      0C  08  FCB 520 550   FCB  34   00  FCB 510 510   FCB 500 500  FCB      08  10   FCB  88   00  FOB      20  10   FCB  28   00  FCB      00  10   FCB 510 500  FCB 500 510   FCB 500 500  FCB 500 500   FCB      10  20  FCB 500 500   FCB 500 500  FCB 500 500   FCB 510 500  FCB      00  04   FCB 500 500  FCB 538 544   FCB      38  00  FCB      10  30   FCB      38  00  FCB 538 544   FCB      7C  08  FCB 538 544   FCB  38   00  FCB      08  18   FCB  08   00  FOB      7C  40   FCB      38  00  FCB 538 540   FCB  38   00  FCB  7   04   FCB 540 500  FOB 538 5
94. 0  34  10  00  08  08  20  20  00  10  00  00  00  10  00  00  00  10  00  00  38  38  10  38  38  7C  38  38  08  08  7    38  38  38  7    40  38  38  38  38  00  00  00  10  08  08  00  00  20  20  38  10    38  38  10  44  78  78  38  38  78  78  7C  7C  7C  40  38  38  44  44  38  38  94    Cg    Cg    00  00  10  00  28  00  28  00  30  00  64  00  50  00  10  00  10  00  10  00  10  00  10  00  00  20  00  00  00  00  94  00  44  00  30  00  44  00  44  00  18  00  40  00  40  00  94  00  44  00  44  00  00  00  00  20  10  00  00  00  10  00  44  00    44  00  28  00  24  00  44  00  24  00  40  00  40  00  44  00  44  00  10  00  94    0g    10    28    7      50    08    50    20    20    08    54    10    00    00    00    08    4C    18    04    94    28    78    40    08    44    44    10    10    20    7      08    04    04    44    24    4B    24    40    4g    40    44    18    04    00    10    00    28    38    10    20    00    20    08    38    7      00    7      00    10    54    10    38    08    48    94    78    18    38    38    00    00    40    00    04    08    34    44    38    40    24    70    70    40    7C    18    04    00    10    00    7      14    20    54    00    20    08    38    10    00    00    00    20    64    10    40    94    7C    94    44    20    44    94    00    00    20    7      08    10    4C    7C    24    40    24    40    40    4C    44    18    04    00    00    00    28    78    4C    48    00    10    10    54    1
95. 0  34  C6  E7  8D  35  C6  E7  35    38  3E    38  35    18  C6  A6  A7  5A  26  39    02  EQ 82    00 00 00 00 CO  00    00 00 00 00   0  00    80        90   8   FF 98  80   AG   8C FF       F6   B2    36  8D 00 44  52  B6    36  8D 00       10  84  44  38  10  84  B6    36  8D 00 26  18  36  01  2    10  39  01    6    36  8D 00 10  10  34  BE  18  18  35  BE  B6    39 3A 3B 3C 3D  3F    30 31 32 33 3D  3F    8   FF       10  80          F9    APPENDIX B  DISASSEMBLY OF SUPER EXTENDED BASIC 1 1    STA 02    SAVE IT      THE PROPER IMAGE  JMP SETVIDEO GO SET UP THE VIDEO REGISTERS    VIDEO RESOLUTION MODE REGISTER  FF99  DATA FOR HSCREEN MODES  RESTABLE FCB 15 320 PIXELS  4 COLORS  LE 6D FCB 1E 320 PIXELS  16 COLORS  LE 6E FCB 14 640 PIXELS  2 COLORS  LEQG6F FCB 1D 640 PIXELS  4 COLORS      VIDEO MODE REGISTER IMAGES FOR THE HI RES GRAPHICS MODES    VIDEO MODE REGISTER IMAGE FOR THE 320x192 GRAPHICS MODE       IM GRAPH FCB     MMUEN MC3 MC2 FF9g  LEG71 FCB  80 500 500 500 500 5  0 FF98   FCB 500 500     VIDEO MODE REGISTER IMAGE FOR THE 640  192 GRAPHICS MODE  LEQ79 FCB     MMUEN MC3 MC2 FF9g  LEG7A FCB 580 500 500 500 500 5  0 FF98   FCB 500 500       PROGRAM            AND THE 8 VIDEO MODE REGISTERS    ENTER WITH X POINTING TO THE DATA TO PUT INTO THE REGISTERS    SETVIDEO LDA X GET THE FIRST BYTE  STA            AND PUT IT INTO               LDY  VIDEOREG POINT TO THE VIDEO MODE REGISTERS  LE 8B LDA X GET A BYTE  STA   Y  AND STICK IT INTO THE VIDEO MODE REGISTER  CMPY  
96. 0876  0877  0878  0879  0880  0881  0882  0883  0884  0885  0886  0887  0888  0889  0890  0891  0892  0893  0894  0895  0896  0897  0898  0899  0900  0901  0902  0903  0904  0905  0906  0907  0908  0909  0910  0911  0912  0913  0914  0915  0916  0917  0918  0919  0920  0921  0922  0923  0924  0925  0926  0927  0928  0929  0930  0931  0932  0933  0934  0935  0936  0937  0938  0939  0940  0941  0942  0943  0944  0945  0946  0947  0948  0949  0950  0951  0952  0953  0954  0955  0956  0957  0958  0959  0960      2        2  9    2        2  5    2        2  0    2  1  E2C7  E2CD  E2D3  E2D9  E2DA  E2DB    2  1    2  7  E2ED  E2F3  E2F7  E2F8  E2FE  E304  E30A  E318  E313  E316  E31C  E322  E328  E32E  E333  E334  E33A  E340  E346  E34C  E34D  E34E  E354  E35A  E360  E366  E36A  E36B  E371  E377  E37D  E383  E386    E389  E38A  E38B  E38F  E392  E394  E397  E39A  E39D  E39F  E3A2  E3A4  E3A7  E3AA  E3AC  E3AE  E3B1    E3B4  E3B6  E3B8  E3BA  E3BC  E3BF  E3C2  E3C4  E3C6  E3C8  E3CA  E3CC  E3CE  E3CF  E3D1    E3D4  E3D6  E3D8  E3DB  E3DD                  2        5    44  58  44  52  43  gD  43  31  31  59  59  00  55  4C  45  20  53  gD  41  43  45  45  52        44  58  44  52  43  00  43  31  31  59  59  gD  55  4c  45  20  53  gD  41  43  45  45  52  gD    4    5F  10  F7  DD  FD  FD  B7  86  B7  86  B7  cc  DD  86  B7  7E    81  27  81  27  BD  7E  9D  81  26  9D  81  26  39  32  7E    8D  9D  BD  DC  FD  DC  FD  39    49  54  20  20  20    4    39  39  20    4E  49  20  4D  4
97. 1    ORIGIN  SPECTRAL ASSOC  REVISED 12 26 99 WALTER K ZYDHEK     FFBA  FFBB     FFBQ  FFBF   FFB    FFB3   FFB    FFBI    Figure 13   Palettes used in graphics modes    26    SUPER EXTENDED BASIC UNRAVELLED II INTERRUPTS ORIGIN  SPECTRAL ASSOC  REVISED 12 26 99 WALTER K ZYDHEK    INTERRUPTS    A new system of interrupts has been added with the advent of the Color  Computer 3  This section will discuss the two new interrupt sources  keyboard and  timer   enabling the interrupts  and processing individual interrupts  There will  be no discussion of the CoCo 2 PIA based interrupts    The new interrupt features are enabled by setting bits 4  FIRQ  and 5  IRQ   of  FF99  If these bits are clear  interrupts are handled as they          in the  original Color Computer  Setting these bits allows you to use the new interrupt  system  The new system of interrupts is based entirely upon the GIME chip and makes  no use whatsoever of the PIA interrupt structure which was the basis of the old   CoCo 2  system of interrupts    The IRQ Enable Status Register and FIRQ Enable Status Register are located at   FF92 and  FF93 respectively  These registers are functionally identical  and are  defined according to Figure 14     Bit 7 Undefined   Bit 6 Undefined   Bit 5 TMR Timer   Bit 4 HBORD Horizontal Border  Bit 3 VBORD Vertical Border  Bit 2 EI2 Serial Data   Bit 1        Keyboard   Bit 0 EI Cartridge    Figure 14   Interrupt Enable Status Register    To enable a specific interrupt  simply set
98. 1 LDA             7 0 GET BACK BLOCK 7 8  STA MMUREG PUT IT BACK INTO CPU BLOCK 0  LCOF6 LDX  DOSBAS POINT TO THE END OF THE COLOR BASIC ROM  LDY             POINT TO START OF EXTENDED BASIC  LBSR  LC1AA MOVE COLOR AND EXTENDED BASIC ROM TO RAM    PATCH COLOR AND EXTENDED BASIC  LEAY                       POINT Y TO THE PATCH TABLE  LDA   Y  GET THE NUMBER OF PATCHES TO BE MADE  LC106 PSHS A SAVE THE PATCH COUNTER  LDX Yet GET THE ADDRESS WHERE THE PATCH IS TO BE PLACED  LDB   Y  GET THE NUMBER OB BYTES IN THE PATCH  LC10C LDA   Y  GET A BYTE  STA X PATCH THE CODE IN RAM  DECB BUMP THE COUNTER  BNE LC10C LOOP UNTIL DONE  PULS A RESTORE THE PATCH COUNTER  DECA  BNE LC106 LOOP UNTIL ALL PATCHES DONE  CLR        30 ENABLE THE ROM MODE  LDA  COCO MMUEN MC3 ENABLE 16K INTERNAL  16K EXTERNAL ROM  STA             100 005    5 GET THE FIRST TWO BYTES OF      EXTERNAL ROM  IF ANY     CHECK FOR A  DK  AT    000  DISK BASIC    THIS SHOULD BE CMPD  CMPA   D   BNE LC137  CMPB   K   BNE LC137    COPY THE DISK BASIC ROM INTO RAM  LDX  SUPERVAR POINT TO THE END OF THE DISK BASIC ROM  LDY  DOSBAS POINT TO THE START OF THE DISK BASIC ROM  BSR LC1AA COPY ROM INTO RAM  LBSR LC322 PATCH DISK BASIC  LC137 CLR        30 ENABLE ROM MODE  LDA      COCO MMUEN MC3 MC1  STA            ENABLE 32K INTERNAL ROM    COPY SUPER EXTENDED BASIC FROM ROM TO RAM  LDX 3H  CRSLOC POINT TO THE END OF ENHANCED BASIC ROM  LDY  SUPERVAR POINT TO THE START OF ENHANCED BASIC ROM  BSR LC1AA COPY ROM TO RAM  LBSR LC1DE PAT
99. 10  2511  2512  2513  2514  2515  2516  2517  2518  2519  2520  2521  2522  2523  2524  2525  2526  2527  2528  2529  2530  2531  2532  2533  2534  2535  2536  2537  2538  2539  2540  2541  2542  2543  2544  2545  2546  2547  2548  2549  2550  2551  2552  2553  2554  2555  2556  2557  2558  2559  2560  2561  2562  2563  2564  2565  2566  2567  2568  2569  2570  2571  2572  2573  2574  2575  2576  2577  2578  2579  2580  2581  2582  2583  2584  2585  2586  2587  2588  2589  2590  2591  2592    EF D  EFOF    EF10    EF12  EF14  EF15  EF17    EF18  EF1C  EF1E  EF20  EF22  EF25  EF28  EF2C  EF2E  EF30  EF32  EF34  EF37  EF39  EF3B  EF3E    EF3F  EF41  EF45  EF49  EF4C  EF4F  EF52  EF55  EF58  EF5A  EF5C  EFSF  EF62  EF65  EF68  EF6C  EF6D  EF6F  EF71  EF73  EF75  EF77  EF79  EF7B  EF7D  EF7F  EF8   EF82  EF84  EF87  EF89  EF8C            EF90  EF92  EF94  EF96  EF99  EF9C                            5           EFA9  EFAB  EFAD  EFAF  EFB    EFB2  EFB4  EFB5  EFB6  EFBA  EFBD    EFC  EFC2  EFC4  EFC8  EFCB  EFCE            EFD3  EFD6  EFD9  EFDB  EFDD    A7  39    8D    A6  43  A7  39    18  A6  81  26  7E  18  18  El  26  EC  31  18  31  31  18  39    gD  10  10  BD  BD  BD  BD  BD  gD  26  BD  BD  BD    7  10        2B  A6  A7  20  96  C6  81  25  C6  4    93  2B  F1  22  F7  27  86  91  2C  97  BD  BD  10  F6  A6  84  80  2    86    7  5A  2E  96  4A  48  10  10  10    86  97  10        F6  BD  07  BD  B6  34  E6  4      80    B5    84    80    8E  M  FF  OA  EE  AE  27  22  F5
100. 1229  1230  1231  1232  1233  1234  1235  1236  1237  1238  1239  1240  1241  1242  1243  1244  1245  1246  1247  1248      573    575    579  E57B  E57F  E581  E584  E586  E589  E58B    E58E  E590  E592  E594  E596  E598  E59A  E59D  E59F        1                  5  E5A6        7  E5A8  E5A9  E5AA                      E5AD                        E5B1  E5B4  E5B8  E5BA  E5BE  E5C0    5  1  E5C2  E5C5  E5C7  E5C9  E5CB  E5CD  E5D1  E5D2  E5D3    E5D5  E5D7    E5D9                500                                        5                                                      E5F    E5F2        6  E5F8                        E600  E602  E604    E606  E60A  E60C  E60F  E612    8D  10  C1  18  1A  17  E6  17  1C  7E    34  96  81  23  C6  20  BD  DC  84  1F  DC  47  56  47  56  47  56  47  56  47  56  35    BD  18  C1  18  1F  5F  53  8E  E7  E6        27  30  48  48  6E     4  20    C4  20    C4  20    C4  26  cc  20  4    5F  BD  39    81  18  26  9D    30  20  81  26  90    30  20  BD  8E  18    19  21  3F  22  50        84              B4    02  4    93  94  40  15  BC  52  1F  01  51    82    B3  21  03  22  98    FF  02  84  OF  1D  8D    86    01  BA    94  06    02  02    08  05  00  02      4    F7  21  08  9F    8D  34  F6  08  9F    8D  28  E7  FF  8E    1A    CE    1D    BE    F3     8    ED  1A    CE    00    00    01    F4    1A    00    00      2  B    E6    87    CB    48    8C    04    BA    66    4A    78    APPENDIX B ORIGIN  SPECTRAL ASSOC  DISASSEMBLY OF SUP
101. 15  EE17  EE19  EE1C                20      23      25      28      2        2        2    EE2F  EE31  EE34  EE36  EE38  EE3B  EE3E      40      43      45      48            EE4C            EE50  EE52  EE55  EE57  EE59  EE5B    EE5D  EE5F    20  D6  El  27  EE  27  1F  20  1F  EC  31  31  8D  18  cc  ED  06  E7  DC  ED  BD  BD  39  1F  30  DC  30  8C  22  39  C6  20  C6  18  BD  BD  7E    8E  OF  5F  20    8E  OF  C6  00  10  10  07  81  26  90  BD  BD  BD  D7  OF  9D  27  03  BD  00  26  16  C6  8E  EE  Al  27  5A  26  7E  DF  9D  BD  BD  D6  BD  DC  18  2F  9E  9F  DD  DC  18  2F  9E  9F  DD    96  C6    1B  D2  22  37  M  04  32  F4  23  23  25  AB  17  AF  00  M  D2  22  D3  23                21  05  D3  8B  DF  05    12  02  0          EQ  EQ  AC    EE  D5    07          05  01  E6  27  21  D8  40  02  9F  E9  B2  B7  D3  D4  A5  21  D4  B2  D8  03   4  05        81  80  06    F7  B2  D5  9F  EQ  El  D3  EF  BD  93  06  C3  BD  C3  BF  93  06  C5  BF  C5    E6  F8    C4  00    FF  97    00    DF  FF  97  46            EF    F8  12    El  6D    B    6D    54    EQ    77    CB  19  18    C3    C5    FD    F5  02    LED95  LED97    LEDA3    LEDBO    LEDBD    LEDC4    LEDD2    LEDD6  LEDD8      HGET  HGET      HPUT  HPUT    LEDF4    LEE06    LEE23    LEE28    LEE34    LEE38    LEE59    BRA  LDB  CMPB  BEQ  LDU  BEQ  TFR  BRA  TFR  LDD  LEAY  LEAY  BSR  STY  LDD  STD  LDB  STB  LDD  STD  JSR  JSR  RTS  TFR  LEAX  LDD  LEAX  CMPX  BHI  RTS  LDB  BRA  LDB  LDS  JSR  JSR  JMP  
102. 2 serial port                  Keyboard               0 Cartridge Port  FF93 FIRQ Interrupt Enable Status Register  FIRQENR   BIT6 7 Unused  BIT5 TMR Timer  BIT4 HBORD Horizontal Border  BIT3 VBORD Vertical Border  BIT2 EI2 RS 232 serial port                  Keyboard  BIT         Cartridge Port    D1    SUPER EXTENDED BASIC UNRAVELLED II APPENDIX D ORIGIN SPECTRAL ASSOC    FF94    FF95    FF96 7    FF98    FF99    FF9A    FF9B    FF9C    FF9D    GIME CHIP CONTROL REGISTERS REVISED 12 26 1999 WALTER K ZYDHEK    Timer Register  MSB   BIT4 7 Unused  BIT  3 Most Significant 4 bits of timer    Timer Register  LSB              7 Least Significant 8 bits of timer    Reserved    Video Mode Register    BIT7 BP    text  l bit plane graphics  BIT6 Unused   BIT5 BPI Burst Phase Invert  Color Set         4 MOCH 1 Monochrome  Composite Monitor   BIT3   50 1 50Hz vertical sync   BIT  2 LPR Lines per Row    Video Resolution Register    BIT7 Undefined   BIT5 6 LPF Lines per Field  number of rows   BIT2 4  HRES Horizontal Resolution   BIT  1 CRES Color Resolution    Border Register    BIT6 7 Unused  BIT  5 Border Color  Unused    Vertical Scroll Register    BIT4 7 Unused  BIT  3 VSC Vertical Scroll Bits    Vertical Offset Register  MSB     BIT  7 Y8 Y15 Vertical offset high order byte    D2    SUPER EXTENDED BASIC UNRAVELLED II APPENDIX D ORIGIN SPECTRAL ASSOC    FF9E    FF9F                                             FFBQ FFBF    GIME CHIP CONTROL REGISTERS REVISED 12 26 1999 WALTER K ZYDHE
103. 29D  LC355 FCB 503  LC356 JMP ALINK28  E297      INTERRUPT VECTOR IMAGES    THESE LBRAs WILL LINK TO BASIC S RAM INTERRUPT VECTORS       188  INTIMAGE FCB  55 VALIDITY FLAG  INTERRUPT VECTORS VALID INVALID   LC35A LBRA   INTIMAGE 1   CINT JUMP  SW3VEC  LBRA   INTIMAGE 1   CINT JUMP  SW2VEC  LBRA   INTIMAGE 1   CINT JUMP  FRQVEC  LBRA   INTIMAGE 1   CINT JUMP   IRQVEC  LBRA   INTIMAGE 1   CINT JUMP  SWIVEC  LBRA   INTIMAGE 1   CINT JUMP  NMIVEC      END OF THE DATA COPIED INTO RAM    ENDMOVE RMB 153 UNUSED  AUTHPIC RMB  1800 COCO 2 COMPATIBLE DIGITIZED PICTURE OF THE AUTHORS  LDC05 RMB 1019 UNUSED      THE NEW SUPER EXTENDED BASIC CODE STARTS HERE      THE CODE FROM THIS POINT TO  FDFF IS THE ENHANCEMENTS ADDED TO THE  OLD  COCO BASIC    TO SUPPORT THE NEW FEATURES AVAILABLE IN THE COCO 3       THESE ARE THE ONLY  SANCTIONED BY TANDY  LEGAL ENTRY POINTS INTO THE SUPER    EXTENDED  ENHANCED  PORTION OF THE BASIC ROM    ORIGIN SPECTRAL ASSOC  REVISED 12 26 1999 WALTER K ZYDHEK    SUPERVARFDB     HRMODE ADDRESS OF DIRECT PAGE VARIABLES UNIQUE TO ENHANCED BASIC  PRGTEXT FDB                SET THE VIDEO CONTROL REGISTERS TO DISPLAY HI RES TEXT  PRGGRAPH FDB 5               SET THE VIDEO CONTROL REGISTERS TO DISPLAY HI RES GRAPHICS  PRGMMU FDB     SETMMU PROGRAM THE MMU REGISTERS FROM THEIR IMAGES  GETTEXT FDB  5             PLACE THE HI RES TEXT SCREEN INTO LOGICAL BLOCK 1  GETBLOK   FDB     SELBLOK  PLACE THE BLOCK NUMBER IN ACCB INTO LOGICAL BLOCK 6  GETTASK   FDB     SELTASK   R
104. 3  10  00  C9  02  01    83  03  02  E6  02  09  83  03  01  00  03  00  C7  BD  C9  BF  C5  C3  D5  04  C9  C7  EA  D6  03    9  05  06          F5  02  F5  06  F5  2c  26  F5  01  40  02  28  94  2D  97  30  F4  F5  2B  97  2D  04  F5    02        EQ  03    00    10  08  27  09  80  09  08  20        90    30  OB  60  62  B3  D3  EQ  F6  25    0g    00    02 80    7      01 40    3F                  00    4      CF    91    78    91    BE EB  75    04    91      2    BD    BE Bl    E9    08       8D    LF4FC    LDU  ADDD  BMI  TFR  TFR  LDX  ADDD  BMI  TFR     0  HORDEF  LFAFC  D U  X D    0  VERDEF  1  507  D X    APPENDIX B  DISASSEMBLY OF SUPER EXTENDED BASIC 1 1    ORIGIN SPECTRAL ASSOC  REVISED 12 26 1999 WALTER K ZYDHEK    DEFAULT HORIZONTAL END POSITION TO 0   ADD DIFFERENCE TO HORIZONTAL START   GO FORCE HORIZONTAL COORD TO    IF RESULT IS NEGATIVE  SAVE HORIZONTAL END POSITION IN U   PUT DIFFERENCE IN ACCD   DEFAULT THE VERTICAL END POSITION TO 0   ADD THE DIFFERENCE TO VERTICAL START   VERTICAL COORD      IF RESULT IS NEGATIVE   SAVE VERTICAL POSITION IN X      MOVE THE DRAW POSITION  ENTER WITH ABSOLUTE HORIZONTAL POSITION    IN U REGISTER AND ABSOULTE VERTICAL POSITION IN X REGISTER    LF507    LF510    LF51F    LF527    LF53B    LF545      SET  LF54C    LF578    LF575  LF578    LF583  LF584    CMPU  BCS  LDU  LDA  CMPA  BGT  CMPU  BCS  LDU  CMPX  BCS  LDX  LDD  STD  LDD  STD  STX  STU  TST  BNE  STX  STU  JSR  TST  BNE  JSR  CLR  CLR  JMP    THE DRAW  JSR  PSHS
105. 35    1A  17  39  17  1C  39    8D  BD  27  35  BA  26  C6  D7  8D  BE  A6  85  27  B6  20  B6  8A  A7  8D  8    7      80  18  BE  81  26    8C  27  8D  20  81  26  8D  20  81  25  F6  ED  8D  BC  25  8D  8D  35    34  86  F6  ED  CA  ED  30  BF  FC  4A  2A  5A  F7  B6  4A  B7  35  34  86    F7  F9  10      7  06  A9  A3  FF  F8    20  8D  23  2C  AG    50    9      9          07    1  F9  94  94  1D  OB  94  El  FE  01  40  05        05        40  01  00  04    7    C2  21  FE  08  09    20  1    20  1    00  04  5D  OB  20              84  30        02  76  98  96    06  20  FE  84  40  1    1    FE  FE    08          FE    FE  86  06  20    40    28  90  7      E8    3E    1C    CB    00    08    08          03    08  00    00    08    06    08    00  02    03  04    02    CF    4c    APPENDIX B  DISASSEMBLY OF SUPER EXTENDED BASIC 1 1    ORIGIN  SPECTRAL ASSOC  REVISED 12 26 1999 WALTER K ZYDHEK    CHECK FOR END OF THE DISPLAY NAME ROUTINE  LOOP UNTIL DONE  RESTORE X  THIS AND THE RTS FOLLOWING SHOULD BE PULS X PC    CHECK FOR HI RES TEXT MODE   BRANCH IF IN A HI RES TEXT MODE   CLEAR THE 32 COLUMN SCREEN   RE ENTER THE MAIN STREAM OF CODE     390   RESET THE HI RES TEXT SCREEN       SAVE THE VALUE      ACCA AS THE BORDER COLOR IN THE 40 AND 80 COLUMN VIDEO MODE IMAGES    POINT TO THE 46 COLUMN MODE REGISTER IMAGE  SAVE THE BORDER COLOR IN THE 40 COLUMN VIDEO MODE REGISTER IMAGE  SAVE THE BORDER COLOR IN THE 80 COLUMN VIDEO MODE REGISTER IMAGE    DISABLE THE INTERRUPTS  
106. 4  00  94  00  20  00  40  00  08  00  38  00  10  00    28  00  00  00  40  00  00  00  04  00  00  00  14  00  00  38  40  00  10  00  04  38  40  00  10  00  00  00  00  00  00  00  00  40  00  04  00  00  00  00  20  00  00  00  00  00  00  00  00  00  00    50    40    54    64    44    44    44    44    40    10    44    44    44    28    28    08    20    20    08    54    20    44    38    58    38    34    38    10    34    58    00    00    48    10    68    58    38    78    3C    58    36    70    44    44    44    44    44    60    40    54    54    44    78    44    78    38    10    44    28    44    10    10    10    20    10    08    10    7      00    94    64    44    46    44    38    4C    64    30    94    50    18    54    64    44    44    44    64    4g    20    44    44    54    28    44    50    40    44    4C    44    40    54    50    94    18    44    28    54    28    18    20    20    08    08    10    20    00    3C    44    40    44    7C    18    4C    44    18    94    60    10    54    44    44    44    44    40    38    20    44    44    54    18    44    48    40    44    44    44    40    48    48    44    10    44    10    6      44    18    40    20    94    08    10    10    00    44    64    44    4C    40    18    34    44    18    94    50    10    54    44    44    78    3C    40    04    24    4C    28    28    28    3C    LF1F5    LF1FD    LF205    LF20D    LF215    LF21D    LF225    LF22D    LF235    LF23D    LF245    LF24D   
107. 4 PUT THE DATA POINTED TO BY X INTO THE PALETTE REGISTERS  LE600 CMPA   F6  CMP  TOKEN    BNE LE68C NO  GET A REGISTER NUMBER AND COLOR   JSR GETNCH GET THE NEXT CHARACTER FROM BASIC S INPUT LINE      CMP ENTRY POINT   SET THE PALETTE REGISTERS FOR DEFAULT CMP VALUES  LE606 LEAX                  POINT TO THE DEFAULT CMP PALETTE COLORS    BRA LE634 PUT THE DATA POINTED TO BY X INTO THE PALETTE REGISTERS   LE68C JSR LE7B2 EVALUATE TWO EXPRESSIONS  NORMALLY A HORIZONTAL  amp  VERTICAL COORDINATE  LDX   PALETREG POINT TO THE GIME CHIP S PALETTE REGISTERS  LDY   IM PALET POINT TO THE RAM IMAGE OF THE PALETTE REGISTERS    B13    SUPER EXTENDED BASIC UNRAVELLED II    1249  1258  1251  1252  1253  1254  1255  1256  1257  1258  1259  1268  1261  1262  1263  1264  1265  1266  1267  1268  1269  1278  1271  1272  1273  1274  1275  1276  1277  1278  1279  1288  1281  1282  1283  1284  1285  1286  1287  1288  1289  1298  1291  1292  1293  1294  1295  1296  1297  1298  1299  1300  1301  1302  1303  1304  1305  1306  1307  1308  1309  1310  1311  1312  1313  1314  1315  1316  1317  1318  1319  1320  1321  1322  1323  1324  1325  1326  1327  1328  1329  1330  1331  1332  1333  1334  1335  1336  1337  1338  1339  1340  1341  1342  1343  1344      616    618  E61A      1      620    622    624    626    628  E62A  E62C    E62D  E62F  E631  E633    E634  E636  E63A  E63C  E63E  E642  E644  E645  E647    E648  E64A  E64C    64    E64F  E651  E653    E654  E65A  E660    E664  E66A  E670    E674   
108. 44   FCB      38  00  FOB 538 544   FCB      38  00  FCB 500 500   FCB 500 500  FCB 500 500   FCB      10  20  FCB      08  10   FCB  88   00  FCB 500 500   FCB 500 500  FCB   20 510   FCB   20 500  FCB 538 544   FCB 510 500     UPPER CASE CHARACTERS  FCB 538 544   FCB  38   00  FCB 510 528   FCB  44   00  FCB 578 524   FCB  78   00  FOB 538 544   FCB  38   00  FCB 578 524   FCB  78   00  FOB  7   40   FCB      7C   00  FCB      7C  40   FCB      40  00  FOB 538 544   FCB  38   00  FOB 544 544   FCB      44  00  FCB      38  10   FCB      38  00  FCB 504 504     LF1ED       00   10   28   7C   50   08   50   20   20   08   54   10   00   00   00   08   4C   10   04   04   28   78   40   08   44   44   10   10   20   7C   98     94     94   44   24   40   24   40   40   40   44   10     04        00   10   00     28        00   10   00   7C   14   20   54   00   20   08   38   10   00   00   00   20   64   10   40   04   7C   94   44   20   44   04   00   00   20   7C   98     10     4C   7C   24   40   24   40   40   4C   44   10     04        4C    44    APPENDIX B    B29    ORIGIN SPECTRAL ASSOC  REVISED 12 26 1999 WALTER K ZYDHEK    GET THE PRINT ROW NUMBER    SHIFT ACCA LEFT THREE TIMES  MULTIPLY ROW POSITION BY EIGHT  SAVE NEW ROW POSITION IN TERMS OF PIXELS  8 PIXELS CHARACTER     BLANK    SUPER EXTENDED BASIC UNRAVELLED II    2785  2786  2787  2788  2789  2798  2791  2792  2793  2794  2795  2796  2797  2798  2799  2800  2801  2802  2803  2804  2805  2806  2807  2808  2
109. 475  E476  E478  E47B  E47D  E47F  E481  E483  E485  E488  E48A  E48C  E48F  E492  E496  E499  E49C  E49F        1            E4A6  E4A9  E4AD    4  0  E4B3    8D  9D  BD  DC  FD  DC  FD  39    68  69  69  18  5A  26  80  AB  A7  39    10  7      81  1    26  34  96  27  OF  BD  35  7E    81  27  7E  86  B7  96  4C  27  FC  26  96  27  BD  7E  DD  7D  26  18  cc  34  BD  30  DC  18  22  9E  BD  18  7E    7F  96  4C  27  BE  26  34  96  35  27  BD  C1  26  BD  BD  30  BD  BD  7E  C1  26  BD  BD  30  7    7    F7    DA  9F  AF  2B  FE  68  FE    02  01  84  25          30  02  02    25  88    03  01  00  03  E6  05    6  EQ  03          03  03  AD  01        68    05        BA  E6  03  EQ  AE  2B  FE  08  DE  AD  06        01  28  93  02  19  AD  25  AE    FE  68    05        36  02  E6  02  03  EQ  4C  13  B9  B9  8D  AC  AC  AC  4E  00    9  B9  8D  E4  AC  FE    67    0      15    06                  19    C6    F4    17    0      19  09    17    21   4            68    05  00  BB    17    BE    19    5C  AF  00              65    5C  AF  00  96  49  10    90            Bl    36    21    APPENDIX B    DISASSEMBLY OF SUPER EXTENDED BASIC 1 1    BRK BSR     LE3C2   JSR                JSR LAF67   LDD     BINVAL   STD     H ONBRK   LDD CURLIN   STD     H ONBRKS   RTS     amp H TYPE VARIABLE EVALUATION PATCH ENTERED FROM  ALINK6A LSL  02 X   ROL 501      ROL X   LBCS 1    92   DECB   BNE ALINK6A   SUBA   0    ADDA  02      STA  02 X   RTS     amp H TYPE VARIABLE EVALUATION PATCH 
110. 4D  E74F  E751  E754  E756  E757    E759    E75D    E761  E763    E765  E766  E76A  E76C  E76E  E770  E773  E776  E778  E77A  E77D  E77F  E782  E785  E788  E78B  E78E  E791    8D  BD    8E  E7  8C  26  BD  39  C6  7E    81  18  27  8D  F7  9D  27  BD  8D  F7  39    BD        18  39    BD  9D  27  81  27  BD  81  27  BD  8D  BE    F6  00  26  F6  D7  8D  D7  39    34  96  80  8E  E4  96  80  8E  A6  3D  35    03    55    86  20    4    10  gD  27  97  BD  BD  gD  26  BD  20  BD  BD  BD  BD  BD  BD  39    64  El    20  80  AG  F9  EQ    4C  AC    2C  21  09  10          5  08  B2  04          B7  10  24    E7  A5  18  29  0      2  2C  05  E7  0      5          C2  03        B4  03    5    10  E6  01  E7  86  E6  01  E7  86    90    OF    11    01  05    21  E6  81  C2  B2  E7  C2  05    7  03    7    2    7  El  E7  EQ    19    0g    0g    FF    46    19    BA    6D      B      B    cD    31    6D    OE    BA      B    59    5D    01    FF    18    6A  AA    31    18  67  DA  19  92  FF    06    33    03    55    96    APPENDIX B  DISASSEMBLY OF SUPER EXTENDED BASIC 1 1    BSR PIXELFIL FILL ACCB WITH THE SELECTED COLOR  JSR SELTASK1 SELECT TASK REGISTER 1 AS THE ACTIVE TASK REGISTER     FILL MEMORY FROM HRESSCRN TO  A000 WITH ACCB  THIS IS THE HI RES GRAPHICS SCREEN  LDX  HRESSCRN POINT TO START OF HI RES GRAPHICS SCREEN  LE6E4 STB X  CLEAR  A BYTE  CMPX  BASIC CHECK FOR END OF THE HI RES GRAPHICS SCREEN  BNE LE6E4 KEEP  CLEARING  UNTIL DONE  JSR SELTASKO SET TASK REGISTER 0 A
111. 4K range  which  comprises the address range of the CPU  is referred to as the logical address  space  In order to simplify the task of understanding how this is done  it is best  for the reader to discard the concept of the fixed memory map of the computer s  memory  From the point of view of the CPU  the Color Computer 3 s RAM is not one  large contiguous block from B    7FFFF  This will undoubtedly cause a certain  amount of confusion because the video display section of the Color Computer 3 does  consider the RAM as one large contiguous block    Now  you may ask  if the memory is to be considered as 64 blocks of 8K  how  does the CPU know where its memory is  That job is performed by the MMU registers  which are located at  FFA   The eight blocks  which you select as the CPU s memory   are mapped into the CPU s address space by the MMU registers as shown in Figure 1           MMU Register CPU Address Space Logical block number   FFA7  E000  FDFF 7   FFA6  C000  DFFF 6   FFA5  A000  BFFF 5   FFA4  8000  9FFF 4   FFA3  6000  7FFF 3   FFA2  4000  5FFF 2              2000  3FFF 1              0000  1FFF 0    Figure 1   Memory Management Unit Registers    It is important to thoroughly understand the concept of memory blocks  The  physical address space is composed of 64 physical blocks  they will be referred to  simply as blocks   The logical address space is the range of  0  FFFF which can be  addressed by the CPU  The logical address space should be considered as composed of
112. 5        9  EBAD  EBB1  EBB5  EBB9    EBBD  EBBF  EBC1  EBC3        6  EBC8  EBCA    EBCB  EBCD  EBCF            EBD2        4        6  EBD7  EBD9  EBDB  EBDD  EBDF            EBE2  EBE4  EBE6  EBE8  EBEA  EBEC  EBEE  EBEF            EBF3    EBF5  EBF7  EBFB  EBFF  ECO1  EC03  EC05  EC08  ECOB  ECOD  ECOF  EC12  EC14  EC16  EC18    EC1A  EC1D  ECIF  EC21  EC23  EC25  EC28  EC29    EC2B  EC2E    EC31  EC33  EC36  EC38  EC3B  EC3D  EC3F      42      44      47  EC4A      4      44  39    00        FB  F4  EC  El  04  C5  B5    9E  EC  27  83  8D  1F  39    34  6F  A6  3D  ED  EC  3D  EB  89  ED  E6  A6  3D  E3  ED  24  6    A6  E6  3D  E3  ED  35    00  10  10  81  26  90  BD  BD  86  97  BD  DC  34  9D  27    BD  96  97  35  DD  BD  4    34    BD  BD    DF  BD  27  BD  86  97  BD  00  BD  18  00  26    00  C5  16  FB  84  C7  DC  E5  06    CF  C4  07  00  03  21    76  64  63    66  61    66  00  65  E4  63    65  65  02  64  E4  62    64  64  F6    E6  27  21  40  02  9F  EA  E7  01  C2  E7  B4  06    5  03    E7  B5  D8  06  B4  El    56    EB  E7    D9  EC  OF  ED  01  07        07        DF  DB  03    00  19  31  4    61  78  8E  A2  B5    01          14    04    AD    18    18    19    60  E6    BE    01    2    DC    01  19  F2  51  F9  AE  3B  69  06    F4  01    APPENDIX B  DISASSEMBLY OF SUPER EXTENDED BASIC 1 1    50000  50001   FEC5  1919   FB16  31F2   FA4FB  4A51   EC84  61F9   E1C7  78AE   D4DC  8E3B   C5E5  A269   B506  B506    ORIGIN SPECTRAL ASSOC  REVISED 12
113. 500  2890 F38D 20 54 08 00 00 00 LF38D FCB 20  54  08  00  00  00 e  2891 F393 00 00 FCB 00 500  2892     95 00 00 00 00 00 00 1  395 FCB 00 500 500 500 500 500 underline  2893   39   7C 00 FCB 7   500  2894  2895   HDRAW  2896 F39D 00 E6 HDRAW TST HRMODE CHECK HI RES GRAPHICS MODE  2897 F39F 10 27 F3 4C LBEQ LE6EF  HR  ERROR IF HI RES MODE NOT ENABLED  2898          10 21 BC 59 LBRN     RAMLINK RAM HOOK  2899 F3A7 8   00 00 LDX  0   X    ACCB 1  END OF DRAW COMMAND LINE VALUES  2900 F3AA C6 01 LDB 3901   WHEN THESE VALUES ARE PULLED OFF THE STACK   2901 F3AC 34 14 PSHS X B   THE DRAW COMMAND WILL END  2902 F3AE D7 C2 STB SETFLG SET PSET PRESET FLAG TO PSET  2903 F3B0 9F D5 STX VD5 CLEAR UPDATE AND DRAW FLAGS  2904 F3B2 BD E7 31 JSR LE731 SET ACTIVE COLOR BYTE  2905 F3B5 BD B1 56 JSR LB156 EVALUATE EXPRESSION  2906 F3B8 BD B6 54 LF3B8 JSR LB654 GET LENGTH AND ADDRESS OF COMMAND STRING  2907 F3BB 20 08 BRA LF3C5 INTERPRET THE COMMAND STRING  2908          BD F5 91 LF3BD JSR LF591 GET THE NEXT CHARACTER FROM THE COMMAND LINE  2909 F3CU 7E F5 A7 JMP LF5A7 EVALUATE A DECIMAL VALUE IN COMMAND LINE  2910          35 14 LF3C3 PULS B X GET NEXT COMMAND LINE TO BE INTERPRETED FROM THE STACK  2911 F3C5 D7 D8 LF3C5 STB VD8 SET COMMAND LENGTH COUNTER  2912 F3C7 27 FA BEQ LF3C3 GET NEW COMMAND LINE IF ZERO  2913 F3C9 9F D9 STX     9 SET COMMAND LINE ADDRESS  2914 F3CB 10 27 01 01 LBEQ LF4DO EXIT ROUTINE IF ADDRESS   0  2915 F3CF 00 D8 LF3CF TST VD8 TEST COMMAND LENGTH COUNTER  2916 F3D1 2
114. 5E    660    663    665    667  F66A    OF  OF    80  97  DC  8D  DB  89  DD  96  81  2E  cc  20  cc  10  10  DC  00  27  BD  BD  24  0    9    30  9F  DC  39    58  49  34  58  49  58  49  E3  39    81  25  80  80  39    9    34  BD  BD  18  BD  81  26  35  DE  34  9F  BD  35  9F  39    OF  18  81  27  BD        27  C1  27  C1  27  7E    4    97  BD  17  39    86  97  17  86  C6  FD  cc    D3  D4    30  07  03  34  07  00  03  E6  02  05  01  03  02  93  20  03  08  10  F5  F6  CF  08  09  1F  D9  D3    06    El    30  04        C6    D9  18  F5  B3  25  F5  3B  F9  18  A6  40    6    2  10    6    E6  21  00  OF  B7  20    B  28  11  50  2    B4    E7  A9  E9    01  E7  01  28  18        27    3F    7F  D3  BE    91  08    91    2        91    84    09      B    4A    28  BE    OF    94  80    66    28     4    APPENDIX B  DISASSEMBLY OF SUPER EXTENDED BASIC 1 1    ORIGIN SPECTRAL ASSOC  REVISED 12 26 1999 WALTER K ZYDHEK         INITIALIZE THE SUBCOMMAND VALUE TO ZERO      STRIP A DECIMAL ASCII VALUE FROM THE COMMAND STRING AND RETURN THE BINARY VALUE IN VD3    MASK OFF ASCII   SAVE TEMPORARILY   GET THE CURRENT SUBCOMMAND VALUE  MULTIPLY ACCD BY 18   ADD THE CURRENT DIGIT   PROPAGATE THE CARRY   SAVE THE NEW SUBCOMMAND VALUE   GET THE HI RES GRAPHICS MODE   IS IT A 640 OR 320 BYTES PIXEL ROW MODE   BRANCH IF 640 PIXELS HORIZONTAL ROW MODE  MAXIMUM HORIZONTAL PIXELS IN THE 320 PIXEL MODE    MAXIMUM HORIZONTAL PIXELS IN THE 640 PIXEL MODE  COMPARE THE SUBCOMMAND TO THE MAXI
115. 6  RMB 2 USR 7  RMB 2 USR 8  RMB 2 USR 9                 THE ABOVE 20 BYTE USR ADDR VECTOR TABLE IS MOVED TO       95F  972 BY DISC BASIC  THE 20 BYTES FROM  13E  151      ARE REDEFINED AS FOLLOWS       RMB 19 USER  SPARE  COMMAND INTERPRETATION TABLE SPACE    FCB 0 END OF COMM INTERP TABLE FLAG     RMB 9 UNUSED BY DISK BASIC     COMMAND INTERPRETATION TABLE VALUES     BYTE BASIC EX BASIDISK BASIC     0 53 BASIC TABLE     1 2  AA66     3 4  AB67    A5    SUPER EXTENDED BASIC UNRAVELLED II APPENDIX A ORIGIN SPECTRAL ASSOC    0371  0372  0373  0374  0375  0376  0377  0378  0379  0380  0381  0382  0383  0384  0385  0386  0387       0152  915A  0158  015    0150                                                                             MEMORY MAP REVISED 12 26 1999 WALTER K ZYDHEK    20     7      1       9      29                          0 25      BASIC TABLE  1 2  8183   3 4  813C  CE2E   CF  A 2 1    5 14   6 7  821E   8 9  8168  CE56   CF32 2 1                      0 19  20 2 1  DISK BASIC TABLE  1 2  C17F   3 4 50268   5 6   6 7 50201   8 9 50236                     KEYBUF RMB 8 KEYBOARD MEMORY BUFFER   POTVAL RMB 1 LEFT VERTICAL JOYSTICK DATA  RMB 1 LEFT HORIZONTAL JOYSTICK DATA  RMB 1 RIGHT VERTICAL JOYSTICK DATA  RMB 1 RIGHT HORIZONTAL JOYSTICK DATA    BASIC S RAM VECTORS   INITIALIZED TO RTS BY COLOR BASIC   25 SETS OF 3 BYTE INSTRUCTIONS WHICH ARE CALLED BY COLOR BASIC  EXTENDED AND DISK BASIC  THEIR PURPOSE IS TO ALLOW ENHANCEMENTS  SUCH  AS EX BASIC AND DOS BASIC  A
116. 6 99 WALTER K ZYDHEK    MEMORY MANAGEMENT    The 6889 microprocessor can only address 64K of memory  In order to address  more than 64K  a method must be found which will allow the user to switch different  blocks of memory into the CPU s address space  The ability to perform this function  is generally referred to as memory management   There are as many different ways  to implement a memory management scheme as there are different computers in the  world  and each method will have its own strong points and limitations  In the  Color Computer 3  the GIME chip performs the Memory Management Unit  MMU  function    The GIME chip will allow 512K of RAM to be accessed by the CoCo 3  This 512K   address range is called the physical address space  The physical address space is  broken down into 64 blocks of 8K each  The six high order bits of any address   0    7FFFF  are the block number  In a 128K machine that means that there will be 16  blocks which will actually have RAM in them  and the other 48 blocks will be  treated as three sets of 16 blocks all three of which are mirrors of the high order  16 blocks  A 512K machine will  of course  have 64 blocks of RAM  The GIME chip  determines this configuration and there is no known way at this time to trick   fool  or otherwise cajole the chip into allowing you to hang more RAM on the system  without adding hardware to the computer  From this pool of 64 8K blocks you may  select any eight to fill the CPU s memory space of 64K  The 6
117. 644  3645  3646  3647  3648    F8CF    F8D2  F8D4  F8D8  F8DA  F8DC  F8DF  F8E1  F8E3  F8E5  F8E7  F8E9  F8EB  F8ED  F8F1  F8F3  F8F5  F8F7  F8F9  F8FC  F8FF  F902  F905  F907    9      F90B  F90C  FOOF  F911  F913  F914  F916  F917  FOIA  F91C  F91E  F921  F924    F925  F927  F92B  F92D  F938  F933  F935  F937  F93A  F93C  F93F  F942  F944  F947  F949  F94C  F94E    F951  F953  F956  F958  F95A  F95E  F961  F963  F965  F967  F968  F96A  F96C  F96E    970  F973  F975  F978  F979  F97B  F97E    980  F982  F986  F989  F98C  F98E  F991  F992  F994  F997  F999  F99B  F99F  F9A2  F9A5    7E    D6  18  27  34  BD  96  35  C1  26  81  20  81  18  D6  C1  24  34  17  FD  BE  B6  A7  B6  48  3D  8E  30  35  48  1F  3A  B6  8A  A7  BF  17  39    00  10  27  17              DD  FC  DD  17  BD  9F  BD  C6  BD  96  BD    A7  BD  9E  6D  10  10  C6  A6  A7  5A  26  9E  38  OF  BD  9F  BD  4    D6  BD  9E  6D  10  BD  BD  9F  BD  4    D6  BD  9E  6D  10  BD  BD  9F    AC    E7  21  F3  04  E7  2C  04  01  04  28  02  50  24        18  F6  06  FE  FE  FE  FE  01          20  8B  06    89          40  01                E7  21  AG  FE  FE  84  CB  FE  cD  FE  B3  3B  B2  01    5  CB  B5    84  B5  3B  1F  2A  9E  05  AG  80    F9  OB  1B  OB  B3  3B  B2    cc  B4  3B  1F  2B  BC  B3  3B  B2    CD  B4  3B  1F  2B  BC  B3  3B    46    07    B2    BB    76  02  00  08    94    00    08    00  54    06    42    00    02    39  57    60    60    11    4C    B7  52    57    6D    F4    B7  35  57   
118. 64K  32K for operating system code  32K  for workspace   It should be noted that a few commands do access memory outside of  this 64K range  LPEEK  LPOKE  HGET  HSCREEN  etc    but the Basic program is  limited to this 64K block  Several enhancements were made to Basic  though   including super high resolution graphics  up to 640 x 192  and a 40 or 80 column  text mode  Fortunately  both the super hi res graphics screen and the 40 80 column  text screen are located outside of the 32K workspace  unlike the original Color  Computers  where memory for these were taken out of the workspace   Additionally  a  super hi res HGET HPUT buffer is located outside of the workspace  This means that  high resolution graphics and text can be achieved without sacrificing workspace  Of  course while Basic can t have more than 32K for its program  machine language  programs have full use of the 128K or 512K that you have in your system    Most of the original Color Computer graphics modes have been implemented in  the Color Computer 3  However  the Semigraphics 4 mode  the standard 32 column text  screen  is the only semigraphics mode available  Any software using the other  semigraphics modes will not display properly on the Color Computer 3     Other Differences    One of the important aspects of memory management is insuring that the code  the CPU must execute is always in place  For example  you can t tell the memory  management unit  MMU  to move in a new memory section when the CPU is ge
119. 67  1768  1769  1778  1771  1772  1773  1774  1775  1776  1777  1778  1779  1788  1781  1782  1783  1784  1785  1786  1787  1788  1789  1798  1791  1792  1793  1794  1795  1796  1797  1798  1799  1800  1801  1802  1803  1804  1805  1806  1807  1808  1809  1810  1811  1812  1813  1814  1815  1816  1817  1818  1819  1820  1821  1822  1823  1824      9  1  E9A3  E9A5  E9A7  E9A9  E9AB  E9AD  E9AF      9  1  E9B3  E9B5  E9B7  E9B8  E9BA  E9BC  E9BE  E9BF  E9C1  E9C3  E9C5  E9C6  E9C8  E9CA  E9CC    E9CD  E9CF  E9D1  E9D3    E9D5  E9D6  E9D7  E9D9    E9DB  E9DD  E9DF    E9E1  E9E3    9  5    9  7    9  9    9      E9ED  E9F    E9F2  E9F5  E9F8  E9FB  E9FF  EAQ2  EAQ4  EAQ7  EAQA  EAQD      10      13        16      19  EA1B  EA1D            EA20    EA21  EA24    EA25  EA27  EA29  EA2B    EA2D  EA2E      30  EA31  EA33    ED  A3  25  ED  AD  20  35  35    9E  30  9F  39  9E  30  9F  39  9E  30  9F  39  9E  30  9F  39    DC  93  24  34    40  50  82  35    DC  93  20    9E  9F  9E  9F  81  27  BD  C6  BD  BD  BD  18  BD  20  BD  BD  7E  BD  CE  7E    CE  D6  Cg  58  EE  39    CE  39    EA  EA  EA  EA    44  24  46  38  39    E4  64  E6  E4  A4  EQ  18  F6    BD  01  BD    BF  01  BF    BD  1F  BD    BF  1F  BF    C5  BF  F9  01    00  81    C3  BD  FO    C7  BD  C9  BF  AC  03  EA  AC  B2  B2  B7  8E  E7  06  B2  E7  B2  E7  00  E7    EA  E6  01    C5    34  3D  2D  34    03    01    94    6F  6A  34  00 C3  B9    6A  B2  67  AD  C3  B      45    LE9AD    STD  SUBD  BCS  STD  JSR  B
120. 6E LDD  STD  CMPX  BCS  BRA      FILL THE LAS  LF87B CLR  LDA  STA  LDA  LDB  PSHS  STD  CMPX  BNE  CLR  PULS  LDA  LDB  ORB  STD  STX  RTS    LF88A      PRINT   PATC  ALINK26 TST  BNE  TST  BNE  JSR  JMP  LBSR  TST  PSHS  LBSR  PULS  LBNE  RTS    LF8AB    LF8B1      PRINT   PATC    ALINK25 TST  BNE  JSR  JMP  LF8CD LDB    APPENDIX B  DISASSEMBLY OF SUPER EXTENDED BASIC 1 1    H CRSATT   940  502      X  H CRSLOC  H CURSX    H COLUMN  LF802    H CURSY    LF8 2   CARRIAGE RETURN           SPACE  H CRSATT   Mena    A  H CURSX    H CURSX  H  COLUMN  A   LF82E  H CRSLOC  H CURSX  H CURSY  8920  H CRSATT   940   X  A B PC    CREEN          HRESSCRN  H  COLUMN   40   LF86E    CHARACTER ROW   2 40 X   X     HRESSCRN  ROWMAX 1  40 2  LF860   LF87B   A B PC    CHARACTER SCREEN   80 2      X     HRESSCRN   ROWMAX   1   88 2  LF86E   LF86A    T ROW WITH SPACES  H CURSX   ROWMAX 1  H CURSY   SPACE  H CRSATT  X  X    H DISPEN  LF88A  H CURSX  X    20  H CRSATT    40      H CRSLOC    H ENTERED FROM  8902  DEVNUM  LF8AB  HRWIDTH  LF8B1  LA35F  LB95F  LF772  H CURSX  cc  LF778  cc  LB958    H ENTERED FROM 958902  HRWIDTH   LF8CD   LA554   LB905    39 2    B37    ORIGIN SPECTRAL ASSOC  REVISED 12 26 1999 WALTER K ZYDHEK    GET THE CURSOR ATTRIBUTES RAM IMAGE   FORCE THE UNDERLINE ATTRIBUTE   MOVE THE POINTER UP ONE CHARACTER POSITION  SAVE THE NEW CHARACTER ATTRIBUTES IN THE HI RES TEXT SCREEN  SAVE THE NEW CURSOR POSITION   GET THE OLD CURSOR ROW AND COLUMN NUMBERS  BUMP THE COLUMN NUMBER UP
121. 7 F   BEQ LF3C3 GET NEW LINE IF    2917 F3D3 BD F5 91 JSR LF591 GET A COMMAND CHARACTER  2918 F3D6 81      CMPA     CHECK FOR A SEMI COLON  2919 F3D8 27 F5 BEQ LF3CF IGNORE SEMI COLONS  2920 F3DA 81 27 CMPA      CHECK FOR APOSTROPHE  2921 F3DC 27 F1 BEQ LF3CF IGNORE APOSTROPHE  2922 F3DE 81 4E CMPA   N  UPDATE CHECK   2923   3     26 04 BNE LF3E6 BRANCH IF NOT  2924 F3E2 03 D5 COM VD5 TOGGLE UPDATE FLAG       UPDATE  FF   NO UPDATE  2925 F3E4 20 E9 BRA LF3CF GET NEXT COMMAND  2926 F3E6 81 42 LF3E6 CMPA   B  CHECK DRAW FLAG   2927 F3E8 26 04 BNE LF3EE BRANCH IF NOT  2928 F3EA 03 D6 COM VD6 TOGGLE DRAW FLAG      DRAW LINE  FF   DON T DRAW LINE  2929 F3EC 20 El BRA LF3CF GET ENXT COMMAND  2930 F3EE 81 58 LF3EE CMPA       SUBSTRING   2931   3  0 10 27 00 AD LBEQ LF4A1 GO EXECUTE A COMMAND SUBSTRING  2932 F3F4 81 4D CMPA   M  MOVE THE DRAW POSITION   2933 F3F6 10 27 01 52 LBEQ LF54C BRANCH IF YES  GO MOVE IT  2934 F3FA 34 02 PSHS A SAVE CURRENT COMMAND  2935 F3FC C6 01 LDB   01 DEFAULT VALUE IF NO NUMBER FOLLOWS COMMAND  2936 F3FE   F D3 CLR VD3 CLEAR MS BYTE OF SUBCOMMAND VALUE  2937   400 D7 D4 STB     4 SAVE LS BYTE OF SUBCOMMAND VALUE  2938 F462   D D8 TST VD8 CHECK COMMAND LENGTH COUNTER  2939   404 27 11 BEQ LF417 BRANCH IF NO COMMANDS LEFT  2940 F486 BD F5 91 JSR LF591 GET A COMMAND CHARACTER  2941 F469 BD        2 JSR LB3A2 SET CARRY IF NOT ALPHA  2942 FAQC 34 01 PSHS CC SAVE CARRY FLAG  2943 FAQE BD F5 F2 JSR LF5F2 MOVE COMMAND POINTER BACK ONE  2944 F411 35 01 PULS CC RE
122. 79  C17B  C17D    17      C180  C183  C185  C187  C18A  C18C  C18E  C191  C193  C195  C197  C19A  C19D    1  1  C143    1  5    1  7    C1AA  C1AD  6181  6184  6186  6188  C1BA  C1BD    1  0  C1C2  c1c4  C1C6  C1C9  C1CB  C1CF    101  C1D5    C1D6  C1D8  C1DA  6198  6190    C1DE              1  5    1  7    1  9            C1EC    1      C1EF    C1F0  C1F1  C1F4  C1F6  C1F9  C1FB            C200  C283  C206    20    C20C    20    C218  C212  C215  C217  C219  C21C  C21D  C220  C222  C224  C226  C228  C22A  C22C    C22E  C234    A6  8A  A7  30  5A  26    8    86    7  8C  25  86  B7  6D  27  86  B7  8E  31  C6  8D  32  7E    BF  18  7F  EC  AE  EE  18  7F  ED  AF  EF  18  31  18  25  18  39    A6  A7  5A  26  39    8E  31  C6  A6  43  A7  5A  26  39    4    B7  97  B7  c6  F7  c6  F7  8E  10  EC  EE  ED  EF  8C  25  86  B7  4    8E    7    7    7    7    7    7  20    0g  0g    84  20  84  09    F5    04  60  86  06  F9  CE  FF  E4  05  20  FF  FF  8D  10  31  61          5F  FF  FF  M  22  24  EE  FF  M  22  24  EF  28  BC        FE    AG  80    F9    F7  8D  15  AG    80    F8    FE  7  FF  09  FF  3F  FF  c4  8E  81  81  Al  Al  DC  F3  F9  FF    FF  84  03  05  07  09  08  FE    0g  00    00    00    90    98        00    27    02  5F  DE    26  DF    26    5F    5F    1B  01            DE    BA    BB    05  BE    05    22    Cg    95    0g    02    00    28    00    DISASSEMBLY OF SUPER EXTENDED BASIC 1 1    LC175 LDA   X  ORA   20  STA      LEAX  09 X  DECB  BNE 16175   
123. 809  2810  2811  2812  2813  2814  2815  2816  2817  2818  2819  2820  2821  2822  2823  2824  2825  2826  2827  2828  2829  2830  2831  2832  2833  2834  2835  2836  2837  2838  2839  2840  2841  2842  2843  2844  2845  2846  2847  2848  2849  2850  2851  2852  2853  2854  2855  2856  2857  2858  2859  2860  2861  2862  2863  2864  2865  2866  2867  2868  2869  2870  2871  2872  2873  2874  2875  2876  2877  2878  2879  2880    F1F3  F1F5  F1FB  F1FD  F203  F205  F20B  F20D  F213  F215  F21B  F21D  F223  F225  F22B  F22D  F233  F235  F23B  F23D  F243  F245  F24B  F24D  F253  F255  F25B  F25D  F263  F265  F26B  F26D  F273  F275  F27B  F27D  F283  F285  F28B  F28D  F293  F295  F29B    F29D  F2A3  F2A5  F2AB  F2AD  F2B3  F2B5  F2BB  F2BD  F2C3  F2C5  F2CB  F2CD  F2D3  F2D5  F2DB  F2DD  F2E3  F2E5  F2EB  F2ED  F2F3  F2F5  F2FB  F2FD  F303  F305  F30B  F30D  F313  F315  F31B  F31D  F323  F325  F32B  F32D  F333  F335  F33B  F33D  F343  F345  F34B  F34D  F353  F355  F35B  F35D  F363  F365    38  44  44  4B  7C  44  44  44  44  38  38  78  40  38  34  78  44  38  38  7C  10  44  38  44  10  44  44  44  44  44  10  7C  7C  38  38  00  00  38  38  10  10  00  00    10  00  00  30  40  58  00  38  94  34  00  38  08  10  00  94  40  44  00  38  00  44  40  48  30  38  00  54  00  44  00  38  00  40  00  94  00  40        78  20  18  00  34  00  10  00  28  00  44  00    00  48  00  40  00  6C  00  44  00  44  00  44  00  44  00  44  00  44  00  10  00  44  00  44  00  44  00  44  00  4
124. 83 DNMIVC RMB 2 NMI VECTOR  WHERE TO JUMP FOLLOWING AN NMI  0488 d INTERRUPT IF THE NMI FLAG IS SET  0489 90985 RDYTMR RMB 1 MOTOR TURN OFF TIMER  0490 0986 DRGRAM RMB 1 RAM IMAGE OF DSKREG  9    4   0491 90987 DVERFL RMB 1 VERIFY FLAG     0FF   FF ON  0492 0988 ATTCTR RMB 1 READ WRITE ATTEMPT COUNTER  NUMBER OF TIMES THE  0493   DISK WILL ATTEMPT TO RETRIEVE OR WRITE DATA  0494 x BEFORE IT GIVES UP AND ISSUES AN ERROR   0495  0496 0989 DFLBUF RMB SECLEN INITIALIZED TO SECLEN BY DISKBAS  0497  0498  RANDOM FILE RESERVED AREA  0499  0500  FILE CONTROL BLOCKS AND BUFFERS  0501  0502  GRAPHIC PAGE RESERVED AREA  0503  0504  BASIC PROGRAM  0505  0506  VARIABLE STORAGE AREA  0507  0508  ARRAY STORAGE AREA  0509  0510  0511   FREE MEMORY  0512  0513  0514  STACK  0515  0516  STRING SPACE  0517  0518  USER PROGRAM RESERVED AREA       A7    SUPER EXTENDED BASIC UNRAVELLED II    0519  0520  0521  0522  0523  0524  0525  0526  0527  0528  0529  0530  0531  0532  0533  0534  0535  0536  0537  0538  0539  0540  0541  0542  0543  0544  0545  0546  0547  0548  0549  0550  0551  0552  0553  0554  0555  0556  0557  0558  0559  0560  0561  0562  0563  0564  0565  0566  0567  0568  0569  0570  0571  0572  0573  0574  0575  0576  0577  0578  0579  0580  0581  0582  0583  0584  0585  0586  0587  0588  0589  0590  0591  0592    8000    8000    000  CODO   000      00          0  FE  2  FE03  FE04  FE05  FE06                                                                  10      11  FE13  FE15  
125. 879  0880  0881  0882  0883  0884  0885  0886  0887  0888       COCO MODE    ALPHA   ALPHA INVER  SEMIGRAPHIC  64x64 COLOR  128x64 GRAP  128x64 COLO  128x96 GRAP  128x96 COLO  128x96 GRAP  128x96 COLO  256x192 GRA                   C           ALPHANUME       APPENDIX A                Q             REG          FH H HB H H               COLOR  COLOR  COLOR  COLOR  COLOR  COLOR    BIT  BIT  BIT  BIT  BIT  BIT    m                    FF22    6                 lt   lt    lt   lt  x x x       UG nn GU x x            PALETTE   PALETTE   PALETTE   PALETTE   PALETTE   PALETTE    CHARACTERS ARE UNDERLINED    MEMORY MAP  512x4 1 1 0  512  2 1 0 0  320  16 1 1 1  320  4 1 0 1  256x16 1 1     256x4 1 0 0  256  2 0 1 0  160x16 1 0 1  SELECTION  DISPLAY MODE  v2 Vi       0 0 0  TED 0 0 0  54 0 0 0  GRAPHICS 0 0 1        5 0 0 1  R GRAPHICS 0 1 0        5 0 1 1  R GRAPHICS 1 0 0        5 1 0 1  R GRAPHICS 1 1     PHICS 1 1 0         MODES  TEXT SCREEN MEMORY  EVEN BYTE  BIT   CHARACTER BIT 0           CHARACTER        1  BIT2 CHARACTER BIT 2  BIT3 CHARACTER BIT 3  BIT4 CHARACTER BIT 4  BITS CHARACTER BIT 5  BIT6 CHARACTER BIT 6  BIT7  ODD BYTE  BIT   BGND  BACKGROUND           BGND1 BACKGROUND  BIT2 BGND2 BACKGROUND  BIT3 FGBD  FOREGROUND  BIT4 FGND1 FOREGROUND  BITS FGND2 FOREGROUND  BIT6 UNDLN  BIT7 BLINK CHARACTERS      GRAPHICS MODES  16 COLOR MODES     BYTE FROM  BITE            BIT2  BIT3  BIT4  BITS  BIT6  BIT7    4 COLOR MODES     BYTE FROM  BIT              BIT2  BIT3  BIT4  BITS 
126. 9 I 19 y 29   39 9 49 I 59 Y 69   79 9       j 1A 7 2A   3A   4A J 5A 7 6A   7A      B    1B   2B   3B   4B K 5B   6B   7B    gc 1 1     2C   3C    4C L 5C   N 6C   7C     00 m 1D   2D   3D   4D M 5D   eD   7D    BE n lE   2E 3D  gt  4E N 5E   6E   7E  gt   OF o 1F eF          4F 0 5F     6     7F      Note  The characters defined by  20  3F are inverse video     J1    
127. A AND THE GIME CHIP    POINT X TO THE SAM REGISTERS    PROGRAM THE SAM REGISTERS FOR HI RES MODE    SET THE VIDEO DISPLAY PAGE TO  E00  ENDLESS WAIT LOOP      IMAGES OF THE VIDEO CONTROL REGISTERS  FF98 FF9F   00 00   F      VIDIMAGE FCB    FCB    500 500 500 500 50      0  500 500    ORIGIN SPECTRAL ASSOC    REVISED 12 26 1999 WALTER K ZYDHEK    SUPER EXTENDED BASIC UNRAVELLED II    0289   0290   0291 C236 12 24   B  0292   23   09 26 00  0293 C242 00 12 00  0294   0295   0296   0297   0298 C246 38 39 34  0299 C249 3B 3C 3D  0300   24              0301   0302   0303   24   38 30 31  0304 C251 32 33 3D  0305 C254 35       0306   0307   0308   0309   0310   0311   0312   256 1     0313   0314   0315 C257 80 C    0316 C259 01   0317  C25A 12   0318   0319   0320   25   B8 D4  0321 C25D 03   0322   25   7E El 38  0323   0324   0325  261 B7       0326 C263 03   0327 C264 7E El 72  0328   0329   0330 C267 81 50  0331 C269 04   0332   26   7E El 92  0333  C26D 12   0334   0335   0336   26   81 6    0337 C270 04   0338 C271 7E El   6  0339 C274 12   0340   0341   0342   0343 C275 88 34  0344 C277 12   0345 C278 7E E3 F8  0346 C27B   F 51  0347  C27D   F 52  0348 C27F   F 53  0349 C281 20 BO  0350 C283   F 50  0351 C285 20 CF  0352 C287 7E E4   C  0353   0354   0355   28   87       0356 C28C 07   0357   280 20       0358  C28F 12   0359 C290 39   0360 C291      00 51  0361   0362   0363 C294 88 BC  0364 C296 02   0365 C297 20 35  0366   0367   0368 C299 88 26  0369   29   02   0370  
128. AB RMB 2  ARYTAB RMB 2  ARYEND RMB 2  FRETOP RMB 2  STRTAB RMB 2  FRESPC RMB 2  MEMSIZ RMB 2  OLDTXT RMB 2  BINVAL RMB 2  OLDPTR RMB 2  TINPTR RMB 2  DATTXT RMB 2  DATPTR RMB 2  DATTMP RMB 2  VARNAM RMB 2  VARPTR RMB 2  VARDES RMB 2  RELPTR RMB 2  TRELFL RMB 1       APPENDIX A ORIGIN SPECTRAL ASSOC  MEMORY MAP REVISED 12 26 1999 WALTER K ZYDHEK    GET PUT BUFFER   STACK AREA FOR HI RES GRAPHICS COMMAND  CHARACTER POINTERS   UNUSED BY BASIC    STOP END FLAG  POSITIVE STOP  NEG END   TERMINATOR FLAG 1   TERMINATOR FLAG 2   SCRATCH VARIABLE   IF COUNTER   HOW MANY IF STATEMENTS IN A LINE    DV  ARRAY FLAG Q EVALUATE  1 DIMENSIONING    DV   PV TYPE FLAG    NUMERIC   FF STRING    TV STRING SPACE HOUSEKEEPING FLAG   DISABLE ARRAY SEARCH     ALLOW SEARCH    TV INPUT FLAG  READ 0            lt  gt 0    TV RELATIONAL OPERATOR FLAG    PV TEMPORARY STRING STACK POINTER    PV ADDR OF LAST USED STRING STACK ADDRESS   TEMPORARY POINTER   TEMPORARY DESCRIPTOR STORAGE  STACK SEARCH    MANTISSA ONLY    FLOATING POINT ACCUMULATOR 42 MANTISSA  BOTTOM OF STACK AT LAST CHECK    PV BEGINNING OF BASIC PROGRAM    PV START OF VARIABLES    PV START OF ARRAYS    PV END OF ARRAYS   1     PV START OF STRING STORAGE  TOP OF FREE RAM     PV START OF STRING VARIABLES   UTILITY STRING POINTER    PV TOP OF STRING SPACE   SAVED LINE NUMBER DURING A  STOP    BINARY VALUE OF A CONVERTED LINE NUMBER  SAVED INPUT PTR DURING A  STOP    TEMPORARY INPUT POINTER STORAGE    PV  DATA  STATEMENT LINE NUMBER POINTER    PV
129. ACC  POKE  amp HF58E   amp HF4  POKE  amp HF58F  amp HCC    34    SUPER EXTENDED BASIC UNRAVELLED II       CODO    0008  0000  001    000    000    0020    003A  045E                2600  0020  0100  0012  1200  0023  004    0044  0119  0010  0020  0040    0021  008    0086    0018  0000  2000  CODO  DFFF  0062  0029  0020    0000  0002  0003  0005    0080  0040  0020  0010  0008  0004  0002  0001    0020  0010  0008  0004  0002  0001    0030  0031  0032  0033                    EQU  BS EQU  CR EQU  ESC EQU       EQU  FORMF EQU  SPACE EQU  STKBUF EQU  DEBDEL EQU  LBUFMX EQU  MAXLIN EQU  DOSBUF EQU  DIRLEN EQU  SECLEN EQU  SECMAX EQU  TRKLEN EQU  TRKMAX EQU  FATLEN EQU  GRANMX EQU  FCBLEN EQU  INPFIL EQU  OUTFIL EQU  RANFIL EQU    PSEUDO PSEUD  SKP1 EQU  SKP2 EQU  SKP1LD EQU            SECMAX SECLEN  35  6  TRKMAX 1  2   TRKMAX 1  2  SECLEN 25   510   520   540    0 0  5    521   8C   86      SUPER EXTENDED BASIC EQUATES    ROWMAX EQU    RAMLINK EQU  HRESSCRN EQU  HRESBUFF EQU  TMPSTACK EQU  EBHITOK EQU  EBHISTOK EQU  CURCHAR EQU      HBUFF HGET HPUT BUFFER HEADER    HB ADDR EQU    HB NUM EQU  HB SIZE EQU  HB LEN EQU    24   0  52000     000   DFFF   62   29  SPACE    0    2  3  5       VIDEO REGISTER EQUATES                BIT EQUATES       coco EQU  88   MMUEN EQU 540   IEN EQU 420   FEN EQU  10   MC3 EQU 8   MC2 EQU 4          EQU 2   MCB EQU 1     INTERRUPT REQUEST ENABLED  TMR EQU 420   HBORD EQU  18   VBORD EQU 8   EI2 EQU 4   EIl EQU 2   EI   EQU 1     EXPANDED MEMORY D
130. ANCH IF CLS 0   CHECK FOR CLS 8   BRANCH IF    CLS 8   CHANGE 1 8 TO 0 7   POINT TO THE PALETTE REGISTER IMAGES   GET THE COLOR IN THE PALETTE REGISTER   AND SAVE IT AS THE NEW BORDER COLOR   SET THE BORDER COLOR IN THE 40  amp  80 COLUMN VIDEO MODE IMAGES  SAVE THE ADJUSTED CLS ARGUMENT AS THE NEW ATTRIBUTE BYTE    PUT THE HI RES TEXT SCREEN INTO LOGICAL BLOCK 1   POINT X TO THE TOP OF THE HI RES TEXT SCREEN   PUT THE CURSOR AT THE TOP OF THE SCREEN   CLEAR THE SCREEN   REMOVE THE HI RES TEXT SCREEN FROM THE LOGICAL ADDRESS SPACE    PUT THE HI RES TEXT SCREEN INTO LOGICAL BLOCK 1   CLEAR THE HI RES TEXT SCREEN   PUT BLOCK 7 1 BACK INTO LOGICAL BLOCK 1   RESET THE ATTRIBUTE BYTE TO ZERO   GET THE COLOR IN PALETTE REGISTER 0   AND SAVE IT AS THE NEW BORDER COLOR   ALSO SAVE IT IN THE 40 AND 80 COLUMN VIDEO REGISTER IMAGES  CHECK FOR CLS 100   IF CLS 100  THEN PRINT THE AUTHORS  NAMES   THIS WILL ONLY BE  DONE THE FIRST TIME CLS 100 IS EXECUTED  THIS CODE WILL BE  OVERWRITTEN BY NOPs WHEN THE AUTHORS  NAMES ARE DISPLAYED   PUT THE HI RES TEXT SCREEN INTO LOGICAL BLOCK 1   CLEAR THE HI RES TEXT SCREEN   PUT BLOCK 7 1 BACK INTO LOGICAL BLOCK 1   POINT TO MICROWARE S COMMERCIAL MESSAGE   COPY A STRING TO CONSOLE OUT  38996     NAMES INTO THIS SPOT    PUT THE HI RES TEXT SCREEN INTO LOGICAL BLOCK 1  CLEAR THE HI RES TEXT SCREEN   PUT BLOCK 7 1 BACK INTO LOGICAL BLOCK 1   POINT TO THE AUTHOR MESSAGE   COPY A STRING TO CONSOLE OUT    POINT TO THE INSTRUCTION WHICH BRANCHES TO THIS RO
131. AND 2  STX  U SAVE IT  LEB73 LDX 3192 1 GET THE MAXIMUM VERTICAL COORD  STX  02 U SAVE IT  JMP LE7B   JUMP TO AN RTS  ONCE WAS A NORMALIZATION ROUTINE      EVALUATE CIRCLE START POINT  OCTANT  SUBARC     CALCULATE START OF END POINT WHICH IS A NUMBER FROM    0 63 SAVED AS AN OCTANT NUMBER  0 7  AND SUBARC NUMBER  0 7     LEB7B CLRB SET DEFAULT VALUE TO 0  JSR GETCCH GET BASIC S CURRENT INPUT CHARACTER  BEQ LEB91 BRANCH IF NONE  JSR   SYNCOMMA DO A SYNTAX CHECK FOR A COMMA  JSR LB141 EVALUATE A NUMERIC EXPRESSION  LDA              GET EXPONENT      FPAQ  ADDA 4506 ADD 6 TO EXPONENT   MULTIPLY EXPONENT BY 64  STA              RESAVE IT  JSR LB7OE CONVERT          TO INTEGER IN ACCB  ANDB   3F FORCE MAX VALUE OF 63   LEB91 TFR       SAVE VALUE               ALSO  ANDB 4507 NOW ACCB CONTAINS SUBARC NUMBER  LSRA  LSRA    B21    SUPER EXTENDED BASIC UNRAVELLED II    2017  2018  2019  2020  2021  2022  2023  2024  2025  2026  2027  2028  2029  2030  2031  2032  2033  2034  2035  2036  2037  2038  2039  2040  2041  2042  2043  2044  2045  2046  2047  2048  2049  2050  2051  2052  2053  2054  2055  2056  2057  2058  2059  2060  2061  2062  2063  2064  2065  2066  2067  2068  2069  2070  2071  2072  2073  2074  2075  2076  2077  2078  2079  2080  2081  2082  2083  2084  2085  2086  2087  2088  2089  2090  2091  2092  2093  2094  2095  2096  2097  2098  2099  2100  2101  2102  2103  2104  2105  2106  2107  2108  2109  2110  2111  2112        97      98        99      90        1        
132. B FCB  FCB  FCB  RGB BRA  CMP BRA    BINVAL 1   16  ILLFUNC  A X   A Y  VERBEG 1   63  LE62A   63    950    x      HSAF          IM  PALET  LE648   X   PALETREG    50    LE648   16 1   X           LE64A    AF    18 36 11 7 63 31  9 38 0 18 0 63  0 18 0 38    18 54 9 36 63 27  45 38 0 18 0 63  0 18 0 38   LEBFA    LE606    APPENDIX B  DISASSEMBLY OF SUPER EXTENDED BASIC 1 1    ORIGIN SPECTRAL ASSOC  REVISED 12 26 1999 WALTER K ZYDHEK    GET THE NUMBER OF THE PALETTE REGISTER TO CHANGE   16 PALETTE REGISTERS MAXIMUM   ILLEGAL FUNCTION CALLERROR IF PALETTE REGISTER 2 15  POINT TO THE SELECTED PALETTE REGISTER   POINT TO THE SELECTED PALETTE REGISTER RAM IMAGE   GET THE NEW COLOR FOR THE PALETTE REGISTER   MAXIMUM OF 64 COLORS  ZERO IS A LEGIT COLOR    BRANCH IF LEGITIMATE COLOR SELECTED   USE COLOR 63 IF BAD COLOR NUMBER SELECTED   DISABLE INTERRUPTS   WAIT FOR AN INTERRUPT TO CHANGE PALETTE REGISTERS   THIS WILL  PREVENT THE SCREEN FROM FLASHING WHEN THE CHANGE IS MADE  SAVE THE NEW COLOR IN THE PALETTE REGISTER   SAVE THE NEW COLOR IN THE PALETTE REGISTER RAM IMAGE  ENABLE IRQ  FIRQ INTERRUPTS    SAVE THE SOURCE REGISTER POINTER   POINT TO THE PALETTE REGISTER RAM IMAGE   COPY THE SOURCE PALETTE REGISTER TO THE RAM IMAGE  RESTORE THE SOURCE REGISTER POINTER   POINT TO THE PALETTE REGISTERS   DIABLE INTERRUPTS   COPY IMMEDIATELY AFTER AN INTERRUPT TO PREVENT SPARKING  COPY THE SOURCE REGISTER DATE INTO THE PALETTE REGISTERS    NUMBER OF BYTES TO COPY   BUG   SHOULD BE 16  GET A
133. BB LDX  PALETREG POINT X TO THE PALETTE REGISTERS   0009 COBD A7 80 LC00D STA X SAVE THE COLOR IN THE PALETTE REGISTER   0010 COBF 5A DECB BUMP COUNTER   0011 C010 26 FB BNE 1  000 LOOP UNTIL ALL PALETTE REGISTERS DONE   0012   0013 C012                LDX  MMUREG POINT X TO THE MMU REGISTERS   0014 C015 31 8D 02 2D LEAY   MMUIMAGE PC POINT Y TO THE MMU REGISTER IMAGES   0015  019 C6 10 LDB  16 16 MMU REGISTERS   0016                    LC01B LDA   Y  GET A BYTE FROM THE IMAGE   0017   010 A7 80 STA X SAVE IT IN THE MMU REGISTER   0018 CO1F 5A DECB BUMP COUNTER   0019 C020 26 F9 BNE LC01B LOOP UNTIL DONE   0020  022 86 CE LDA   COCO MMUEN MC3 MC2 MC1 ENABLE COCO COMPATIBLE MODE  ENABLE MMU   0021 C024 B7 FF 90 STA            AND TURN ON THE NORMAL SPARE CHIP SELECT   0022   MOVE THE INITIALIZATION CODE FROM ROM TO         4000   THIS IS DONE IN   0023    PREPARATION FOR MOVING BASIC FROM ROM TO RAM    0024 C027 30 8D 00 14 LEAX  BEGMOVE PC POINT TO START OF ROM CODE   0025   02   10 8E 40 00 LDY 5 4000 RAM LOAD ADDRESS   0026   02   EC 81 LC 2F LDD   X   GRAB TWO BYTES   0027   C031 EE 81 LDU   X   GRAB TWO MORE BYTES   0028  033 ED Al STD Yet MOVE FIRST SET OF BYTES   0029  035 EF   1 STU Yet AND THEN THE SECOND   0030   C037 8C      6C CMPX  ENDMOVE ARE ALL BYTES MOVED    0031   0     25      BCS LCO2F KEEP GOING UNTIL DONE   0032   03   7E 40 00 JMP 14000 JUMP INTO THE MOVED CODE   0033   0034   THE REST      THE CODE IS MOVED INTO RAM TO BE EXECUTED   0035 CO3F 32 7F BEGM
134. BF  0069    VEREND  VIDEOREG  VIDIMAGE  VIDRAM  WAITLOOP  WCOLOR  WIDTH  ZERO    SUPER EXTENDED BASIC 2 0 SYMBOL TABLE    0065  FF98  C22E  0400  C22C  06084  F636  908A    APPENDIX C     4    ORIGIN SPECTRAL ASSOC  REVISED 12 26 1999 WALTER K ZYDHEK    SUPER EXTENDED BASIC UNRAVELLED II APPENDIX D ORIGIN SPECTRAL ASSOC  GIME CHIP CONTROL REGISTERS REVISED 12 26 1999 WALTER K ZYDHEK    The major functions of the GIME chip are controlled by the chip control  register which are mapped into the I O page   FF00  FFFF  which is always  present in the logical address space regardless of the status of the MMU  registers  The area from  FF9Q  FFBF in particular is a direct link to the    GIME chip            Initialization Register     INIT     BIT7        1 Color Computer Compatible  BIT6 MMUEN 1 MMU Enabled  COCO   0   BIT5        1 Chip IRQ output enabled  BITA FEN 1 Chip FIRQ output enabled  BIT3 MC3 1 RAM at XFEFF is constant  BIT2 MC2 1  FF4  4F external  Q internal                  ROM map control  see table below                  ROM map control  see table below          MCB ROM mapping  g X 16K Internal  16K external  1 0 32K Internal  1 1 32K External  except vectors   FF91 Initialization Register 1  INIT1   BIT6 7 Unused  BIT5 TINS Timer clock  1   70nsec       63 5 usec  BIT1 4 Unused  BIT  TR MMU task register select  FF92 IRQ Interrupt Enable Status Register  IRQENR   BIT6 7 Unused  BIT5 TMR Timer  BIT4 HBORD Horizontal Border  BIT3 VBORD Vertical Border  BIT2 EI2 RS 23
135. BLED    FIRQ INTERRUPT ENABLE REGISTER    CARTRIDGE FIRQ ENABLED  KEYBOARD FIRQ ENABLED   SERIAL DATA FIRQ ENABLED  VERTICAL BORDER FIRQ ENABLED  HORIZONTAL BORDER FIRQ ENABLED  INTERRUPT FROM TIMER ENABLED    TIMER REGISTER  RESERVED FOR FUTURE EXPANSION    VIDEO MODE REGISTER    LINES PER ROW  SEE TABLE BELOW   LINES PER ROW  SEE TABLE BELOW   LINES PER ROW  SEE TABLE BELOW   1   50 Hz VERTICAL REFRESH   1   MONOCHROME  ON COMPOSITE    1   BURST PHASE INVERTED    0    ALPHA  1   BIT PLANE    LINES PER CHARACTER ROW    1  GRAPHICS MODES   2  COCO 1  amp  2 ONLY   3  COCO 1  amp  2 ONLY   8   9    RESERVED    12    RESERVED     VIDEO MODE REGISTER    COLOR RESOLUTION   COLOR RESOLUTION   HORIZONTAL RESOLUTION   HORIZONTAL RESOLUTION   HORIZONTAL RESOLUTION   LINES PER FIELD  SEE TABLE BELOW   LINES PER FIELD  SEE TABLE BELOW     LINES PER FIELD  192   200   RESERVED   225         HRES2 HRES1 HRES  CRES1 CRES   0 0 1   0 1 1   1 1 1    GRAPHICS  BP   1  COCO   0    PIXELSxCOLORS  640x4  640x2    HRES2 HRES1 HRES  CRES1       5    1 1 1 0 1  1 0 1 0 0      11    SUPER EXTENDED BASIC UNRAVELLED II    0815  0816  0817  0818  0819  0820  0821  0822  0823  0824  0825  0826  0827  0828  0829  0830  0831  0832  0833  0834  0835  0836  0837  0838  0839  0840  0841  0842  0843  0844  0845  0846  0847  0848  0849  0850  0851  0852  0853  0854  0855  0856  0857  0858  0859  0860  0861  0862  0863  0864  0865  0866  0867  0868  0869  0870  0871  0872  0873  0874  0875  0876  0877  0878  0
136. C6 DF LDB   DF COLUMN TWO STROBE   0087 CBA4 E7 02 STB 502    STROBE THE COLUMNS   0088   0  6      84 LDA     READ THE ROWS   0089 CBA8 43 COMA   0090   0    9 84 40 ANDA   48 LOOK FOR ROW 6 ONLY  F1 KEY    0091 CAB A7 E4 STA  S SAVE IN TEMPORARY STORAGE   0092   CHECK FOR THE CONTROL AND ALT KEYS   0093        10 8E 00 02 LDY  2 CHECK FOR TWO KEYS   0094   0  1 57 LC B1 ASRB SHIFT THE COLUMN STROBE    WASTED  SHOULD BE ASR 2 X  0095 COB2 E7 02 STB 502    SAVE THE NEW COLUMN STROBE   0096 COB4      84 LDA     READ THE KEYBOARD ROWS    Bl    SUPER EXTENDED BASIC UNRAVELLED II    0097  0098  0099  0100  0101  0102  0103  0104  0105  0106  0107  0108  0109  0110  0111  0112  0113  0114  0115  0116  0117  0118  0119  0120  0121  0122  0123  0124  0125  0126  0127  0128  0129  0130  0131  0132  0133  0134  0135  0136  0137  0138  0139  0140  0141  0142  0143  0144  0145  0146  0147  0148  0149  0150  0151  0152  0153  0154  0155  0156  0157  0158  0159  0160  0161  0162  0163  0164  0165  0166  0167  0168  0169  0170  0171  0172  0173  0174  0175  0176  0177  0178  0179  0180  0181  0182  0183  0184  0185  0186  0187  0188  0189  0190  0191  0192    COB6    0  7    0  9  COBB  COBD  COBF  cece  cac4      0  7  COCA  Cacc  COCE  CODO      02   014  6006  6008  CODA  CODE  COEL                  5                 9  CEB  COED        1  COF3  COF6  COF9  COFD     100   104  C196  C188  C1BA    10    C1BE   110  C111  C113  C115  C116  C118  C11B  C11D  C120    C123  C125  C127  C129 
137. CB 540 540  FCB 500 500   FCB      04  04  FCB 500 500   FCB      40  00  FCB 500 500   FCB  78   00  FCB 520 520   FCB  18   00  FCB 500 500   FCB      34  00  FCB      00  00   FCB      10  08  FCB      00  00   FCB      28  00  FCB 500 500   FCB      44  00  FCB      00  00     LF365             50   40   54   64   44   44   44   44   40   10   44   44   44   28   28   08   20   20   08   54     20     44   38   58   38   34   38   10   34   58   00   00   48   10   68   58   38   78   3C   58   3C   78   44   44   44   44     44        DISASSEMBLY OF SUPER EXTENDED BASIC 1 1       50   40   44   4C   44   40   54   50   04   10   44   28   54   28   10   20   20   08   08   10     20     00   3C   44   40   44   7C   10   4C   44   10   04   60   10   54   44   44   44   44   40   38   20   44   44   54   10     44        APPENDIX B    B30        UP ARROW    LEFT ARROW    ORIGIN SPECTRAL ASSOC  REVISED 12 26 1999 WALTER K ZYDHEK    SUPER EXTENDED BASIC UNRAVELLED II APPENDIX B ORIGIN SPECTRAL ASSOC          DISASSEMBLY OF SUPER EXTENDED BASIC 1 1 REVISED 12 26 1999 WALTER K ZYDHEK  2881 F36B 04 38 FCB 04 438  2882 F36D 00 00 7C 08 10 20 LF36D FCB 00  00 97C  08  10  20 2  2883 F373 7C 00 FCB 7C  00  2884 F375 08 10 10 20 10 10 LF375 FCB 08  10  10  20  10  10 1  2885 F37B 08 00 FCB 08 500  2886     70 10 10 10 00 10 10 LF37D FCB 10  10  10  00 910  910     2887     83 10 00 FCB 10 500  2888 F385 20 10 10 08 10 10 LF385 FCB 20 910  10  08  10  10    2889 F38B 20 00 FCB 20 
138. CC  E9CD    9  1  E9DB  E9E1  E9F    EA04  EASA  EA D  EA16  EA21  EA25  EA27    ORIGIN  SPECTRAL ASSOC  REVISED  12 26 1999 WALTER K ZYDHEK    LEA29  LEA2B  LEA2D  LEA33  LEA34  LEA3D  LEA44  LEA45  LEA59  LEA95  LEA9F  LEAB3  LEAC7  LEAE7  LEB13  LEBIE       20  LEB32  LEB3D  LEB3F  LEB48  LEB53  LEB5C  LEB5F  LEB69  LEB73  LEB7B  LEB91  LEB9B  LEB9D  LEBA1  LEBA5  LEBA9  LEBAB  LEBAF  LEBB5  LEBB9  LEBBD  LEBCA  LEBCB  LEBEA  LEC 5  LEC1D  LEC47  LEC4A  LEC51  LEC6A  LEC6E  LEC8   LEC83  LEC86  LEC88  LEC9B  LECA5  LECB7  LECBA  LECBE  LECC7  LECCD    EA29  EA2B  EA2D  EA33  EA34  EA3D  EA44  EA45  EA59  EA95  EA9F  EAB3  EAC7  EAE7  EB13                20  EB32  EB3D  EB3F  EB48  EB53  EB5C  EB5F      60      73  EB7B  EB91  EB9B  EB9D        1        5        9  EBAD  EBB1  EBB5  EBB9  EBBD  EBCA  EBCB  EBEA  EC 5  EC1D  EC47  EC4A  EC51  EC6A  EC6E      80  EC83  EC86  EC88  EC9B  ECA5  ECB7  ECBA  ECBE  ECC7  ECCD    SUPER EXTENDED BASIC UNRAVELLED II    LECD1  LECE8  LECEA  LECF1  LED  1  LED15  LED20  LED2E  LED3A  LED3F  LED4E  LED72  LED85  LED95  LED97  LEDA3  LEDB    LEDBD  LEDC4  LEDD2  LEDD6  LEDD8  LEDF4  LEE 6  LEE23  LEE28  LEE34  LEE38  LEE5   LEE5D  LEE6D  LEE92  LEE96  LEEA7  LEEAB  LEEC   LEEC7  LEED3  LEEE   LEEE2  LEEE3  LEEES  LEEE6  LEEE8  LEEE9  LEEEB  LEEEC  LEEEE  LEEEF  LEEF6  LEEFE  LEFO7  LEF10  LEF18  LEF25  LEF2C  LEF62  LEF6C  LEF75    ECD1  ECE8  ECEA  ECF1  ED 1  ED15    020  ED2E  ED3A  ED3F  EDAE  ED72  ED85  ED95  ED97  EDA3  EDB    EDB
139. CD 03   0417  C2CE 7E E3 B4  0418   0419   0420  201 AD       0421  203 04   0422  204 7E E4 D    0423  207 12   0424   0425   0426 C2D8 AC 46  0427  C2DA 03   0428  208 7E E4 70  0429   0430   0431   2          73  0432   2     03   0433   2  1 7E E5 02  0434   0435   0436 C2E4      BA  0437   2  6 03   0438   2  7 7E 8C 37  0439   0440   0441   2       9 10  0442   2     03   0443   2     7E 8C 46  0444   0445   0446   2       1 Bl  0447   2  2 08   0448   2     7E      CE  0449  C2F6 12   0450  C2F7 12   0451  C2F8 12   0452  C2F9 12   0453  C2FA 12   0454   0455   0456 C2FB B9 02  0457  C2FD 03   0458  C2FE 7E F8 C3  0459   0460   0461 C301 B9 5C  0462 C303 03   0463  304 7E F8       0464   0465   0466   C307      8D  0467 C309 03   0468  C30A 7E F7 57  0469   0470   0471  C30D AB D1 B7  0472 C313 96 8C DF  0473 C319 D1 BA 9E  0474  C31F 8C F2 FF  0475   0476 C322 B6 C   04  0477 C325 81 D6    0478 C327 26 0B  0479 C329 8E C   C6  0480 C32C 31 8D 00    9E 8D 8D  D9 DF AB  8D 93 9A    25    LC2AB      PATCH  LC2AE  LC2B8  LC2B1      PATCH  LC2B2  LC2B4  LC2B5      PATCH  LC2B8  LC2BA  LC2BB      PATCH  LC2BF  LC2C1  LC2C2      PATCH  LC2C6  LC2C8  LC2C9      PATCH  LC2CB  LC2CD  LC2CE      PATCH  LC2D1  LC2D3  LC2D4      PATCH  LC2D8  LC2DA  LC2DB      PATCH  LC2DE      2  0  LC2E1      PATCH  LC2E4  LC2E6  LC2E7      PATCH  LC2EA  LC2EC  LC2ED      PATCH  LC2F0  LC2F2  LC2F3      PATCH  LC2FB  LC2FD  LC2FE      PATCH  LC301  LC303  LC304      PATCH  LC307  LC309  LC30A   
140. CH THE ENHANCEMENTS  MOVE THE AUTHORS  DECODED NAMES   LEAY                        POINT X TO THE INTERRUPT JUMP VECTOR IMAGES  LDX  INT FLAG DESTINATION FOR INTERRUPT VECTORS  LDB  19 6 INTERRUPT JUMP ADDRESSES   3 BYTES JUMP ADDRESS   VALIDITY FLAG  LBSR MOVE XY COPY THE INTERRUPT JUMP VECTORS  CLR SAM 31 ENABLE THE RAM MODE  TST 5 WAS THE F1 KEY DEPRESSED   BEQ LC188 NO  LDX  IM TEXT TEXT MODE VIDEO CONTROL REGISTER IMAGES IN SUPER EXTENDED BASIC  LDB   03 THREE SETS OF IMAGES  LEAX  01    SKIP PAST THE  FF99 TEXT MODE IMAGE  LC165 LDA     GET THE INIT   IMAGE  ORA   20 FORCE THE ALTERNATE COLOR SET  STA  X RE SAVE THE            IMAGE  LEAX  09    SKIP TO NEXT SET OF IMAGES  DECB BUMP COUNTER  BNE LC165 LOOP UNTIL DONE  LDB   02 TWO SETS OF GRAPHICS MODE IMAGES  LDX  IM  GRAPH GRAPHICS MODE VIDEO CONTROL REGISTER IMAGES IN SUPER EXTENDED BASIC    B2    SUPER EXTENDED BASIC UNRAVELLED II    0193  0194  0195  0196  0197  0198  0199  0200  0201  0202  0203  0204  0205  0206  0207  0208  0209  0210  0211  0212  0213  0214  0215  0216  0217  0218  0219  0220  0221  0222  0223  0224  0225  0226  0227  0228  0229  0230  0231  0232  0233  0234  0235  0236  0237  0238  0239  0240  0241  0242  0243  0244  0245  0246  0247  0248  0249  0250  0251  0252  0253  0254  0255  0256  0257  0258  0259  0260  0261  0262  0263  0264  0265  0266  0267  0268  0269  0270  0271  0272  0273  0274  0275  0276  0277  0278  0279  0280  0281  0282  0283  0284  0285  0286  0287  0288      175  C177  C1
141. COORD TO ZERO OR HIT BORDER  RETURN WITH Z 1 IF NO PAINTING DONE   JSR LED3A PUT STARTING COORD IN HOREND   LDY  LE9BF ROUTINE TO DEC HORIZONTAL ADDRESS   BRA LECCD GO PAINT THE LINE   FROM HORIZONTAL COORD TO MAX HORIZONTAL COORD OR HIT BORDER  RETURN Z 1 IF NO PAINTING DONE   LDY  LE9B1 ROUTINE TO INCR HORIZONTAL COORD   JSR Y INCR HORIZONTAL COORD   LEFT PAINT ROUTINE PAINTED FIRST COORD   LDU ZERO ZERO INITIAL PIXEL PAINT COUNTER   LDX HORBEG GET HORIZONTAL COORD   BMI LECEA BRANCH IF HORIZONTAL COORD IS  gt   7F OR    0   CMPX  VD3 COMPARE CURRENT COORD TO MAX VALUE   BHI LECEA BRANCH IF  gt  MAX   PSHS U Y SAVE PAINT COUNTER AND INC DEC POINTER   BSR LECF1 CHECK FOR BORDER PIXEL   BEQ LECE8 BRANCH IF HIT BORDER   JSR LE792 SET PIXEL TO PAINT COLOR   PAINTING IS DONE HERE   PULS Y U RESTORE PAINT COUNTER AND INC DEC POINTER   LEAU 901 0  ADD ONE TO PAINT COUNTER   JSR Y INCR OR DECR HORIZONTAL COORD DEPENDING ON CONTENTS OF Y   BRA LECD1 KEEP PAINTING LINE   PULS Y U RESTORE PAINT COUNTER AND INC DEC POINTER   TFR U D SAVE PAINT COUNTER IN ACCD   TFR D X ALSO SAVE IT IN X   SUBD ZERO SET COUNTERS ACCORDING TO CONDITION OF PAINT COUNTER   RTS    FOR BORDER COLOR   ENTER WITH VD9 CONTAINING      ADDRESS OF ROUTINE TO GET ABSOLUTE SCREEN ADDRESS    AND PIXEL MASK   EXIT WITH Z 1 IF HIT BORDER COLOR PIXEL    LECF1    JSR  VD9  GET SCREEN ADDRESS AND PIXEL MASK  TFR A B COPY PIXEL MASK IN ACCB    B23    SUPER EXTENDED BASIC UNRAVELLED II    2209  2210  2211  2212  2213  2214 
142. CS MODE NOT SET UP  RAM HOOK   CHECK FOR   SIGN   BRANCH IF NOT   GET THE NEXT CHARACTER FROM BASIC S INPUT LINE  SYNTAX CHECK FOR      TWO EXPRESSIONS  AND      NORMALIZE THE HORIZONTAL AND VERTICAL COORDS  CODE FOR PSET   SET PSET PRESET FLAG TO PSET   GET PAINT COLOR CODE  amp  SET ACTIVE COLOR AND ALL PIXEL BYTES  GET THEM   SAVE THEM ON THE STACK   GET BASIC S CURRENT INPUT CHARACTER   BRANCH IF NONE LEFT   DEFAULT BORDER COLOR TO FOREGROUND   PAINT COLOR TO BACKGROUND   EVALUATE THE BORDER COLOR   GET BORDER COLOR ALL PIXEL BYTE   TEMP SAVE IT   GET PAINT ACTIVE COLORS BACK   RESAVE THEM      STORE A BLOCK OF  PAINT  DATA ON THE STACK WHICH    WILL ACT AS AN END OF  PAINT  DATA FLAG       THE CLRA WILL CAUSE THE UP DN FLAG TO BE ZERO WHICH IS USED TO EXIT THE HPAINT ROUTINE    GET NORMALIZED MAX HOR VERTICAL VALUES   RETURN RESULT IN VD3 VD5  POINT U TO THE ROUTINE WHICH WILL SELECT A PIXEL    SAVE ADDRESS    PAINT  FROM THE CURRENT HORIZONTAL COORD TO ZERO  BRANCH IF NO PAINTING DONE   HIT BORDER INSTANTLY  PAINT TOWARD MAX HORIZONTAL COORD   SET UP DN FLAG TO UP  1 UP   FF DOWN    SAVE IT   SAVE POSITIVE GOING LINE INFO ON STACK   SET UP DN FLAG TO  FF  DOWN    SAVE NEGATIVE GOING LINE INFO ON STACK   TEMP STORE STACK POINTER   SEE IF PAINTED COLOR IS DIFFERENT THAN THE ORIGINAL COLOR    LEBCB     PSHS U Y X B A  CLR 504 5  LDA 903 5  MUL  STD   06 5  LDD 501 5  MUL  ADDB 906 5  ADCA 4506  STD 905 5  LDB  S  LDA 903 5  MUL  ADDD 905 5  STD 905 5             LEBEA  INC
143. D  EDC4  EDD2  EDD6  EDD8  EDF4        6      23      28        4      38      50  EE5D  EE6D  EE92  EE96  EEA7  EEAB            EEC7  EED3            EEE2  EEE3        5            EEE8  EEE9  EEEB  EEEC  EEEE  EEEF  EEF6  EEFE        7      10  EF18  EF25  EF2C  EF62  EF6C  EF75    LEF7F  LEF8E  LEF96  LEFA3  LEFAD  LEFD9  LEFDB  LEFFE  LF001  LF002  LF004  LF006  LF008  LFOGA  LFg1A  LF035  LF045  LF06C  LF08C  LF09D  LF  A5  LF  AD  LF0B5  LF BD  LF0C5  LF  CD  LF0D5  LF DD  LF  E5  LF  ED  LF  F5  LF  FD  LF185  LF10D  LF115  LF11D  LF125  LF12D  LF135  LF13D  LF145  LF14D  LF155  LF15D  LF165  LF16D  LF175  LF17D  LF185  LF18D  LF195  LF19D  LF1A5  LF1AD  LF1B5  LF1BD  LF1C5  LF1CD  LF1D5    SUPER EXTENDED BASIC 2 0 SYMBOL TABLE    EF7F  EF8E  EF96  EFA3  EFAD  EFD9  EFDB  EFFE  F0g1  F002  F004  F006  F008                1    F035  F045  F06C  F08C  F09D            F  AD                      F0C5  FOCD  FOD5  F  DD  F  E5  F  ED            FOFD    105  F10D  F115  F11D  F125  F12D  F135  F13D  F145  F14D  F155  F15D  F165  F16D  F175  F17D  F185  F18D  F195  F19D  F1A5  F1AD  F1B5            F1C5  F1CD  F1D5    APPENDIX C    LF1DD  LF1E5  LF1ED  LF1F5  LF1FD  LF205  LF20D  LF215  LF21D  LF225  LF22D  LF235  LF23D  LF245  LF24D  LF255  LF25D  LF265  LF26D  LF275  LF27D  LF285  LF28D  LF295  LF29D  LF2A5  LF2AD  LF2B5  LF2BD  LF2C5  LF2CD  LF2D5  LF2DD  LF2E5  LF2ED  LF2F5  LF2FD  LF305  LF30D  LF315  LF31D  LF325  LF32D  LF335  LF33D  LF345  LF34D  LF355  LF35D  LF365  
144. E   TYPE MISMATCH ERROR IF STRING VARIABLE   PACK FPA   AND STORE IT IN THE DESCRIPTOR POINTED TO BY X   EVALUATE A VARIABLE  RETURN X POINTING TO THE VARIABLE DESCRIPTOR  SAVE THE VARIABLE DESCRIPTOR   SYNTAX CHECK FOR A COMMA   ZERO OUT THE MS BYTE OF ACCD   GET THE X COORDINATE OF THE CURSOR POSITION   CONVERT ACCD TO FLOATING POINT   POINT X TO THE VARIABLE DESCRIPTOR   CHECK THE SECOND CHARACTER OF THE VARIABLE NAME   TYPE MISMATCH ERROR IF STRING VARIABLE   PACK          AND STORE IT IN THE DESCRIPTOR POINTED TO BY X   EVALUATE A VARIABLE  RETURN X POINTING TO THE VARIABLE DESCRIPTOR  SAVE THE VARIABLE DESCRIPTOR    SUPER EXTENDED BASIC UNRAVELLED II    3649  3658  3651  3652  3653  3654  3655  3656  3657  3658  3659  3668  3661  3662  3663  3664  3665  3666  3667  3668  3669  3678  3671  3672  3673  3674  3675  3676  3677  3678  3679  3688  3681  3682  3683  3684  3685  3686  3687  3688  3689  3698  3691  3692  3693  3694  3695  3696  3697  3698  3699  3700    F9A7  F9A8  F9AA  F9AD  F9AF    9  1    9  5  F9B8    F9B9  F9BC  F9C0  F9C2  F9C6  F9C7  F9C8  F9C9  F9CB  F9CD    900  F9D3  F9D5  F9D9  F9DB  F9DD  F9DF    9  1  F9E3  F9E5  F9E8  F9EA  F9EC  F9EE  F9F    F9F2  FOF4  FOF6  F9F8  F9FC  F9FE  FA00  FA02  FA04  FA06  FA08  FAQB    FAQC  FE00  FF00    4    D6  BD  9E  6D  10  BD  39    BD  10        10  58  58  58  34  90  BD  BD  C1  18  EA  32  C4  34  9D  27  BD  81  26  35  CA  34  9D  20  81  18  35  CA  34  9D  20  35  F7  39    CE  B4  3B  1F  2B  BC    B7 
145. E  FO4F  F050  F052  F055  F057  F  5A  F05C  FOSE  FOSF  F061  F064  F066  F069  F06B    F06C  F072  F078  FO7E  F684  FO8A    Fg8C  FO8E  FO8F  F090  F091  F092  F093    58  58  49  58  49  A6  AD  7    2    35  BA  27  B7  33  BD  20  BD  39    F                        34  43  A4  A7  35  94  AA  A7  39    34  10  1    44  44  44  44    6  BD  C4  A6  BD  35  39    00  3C  FO    34  10  44  44  44  44  48  EC  BD  1F  BD  35  84  48  EC  BD  1F  BD  35  39    00  00  OF  F    FF  FF    DC  58  58  49  58  49  DD    CB  9F  FE  ED  32  D3  BA  FE  41  EA  DB  EQ    1A  45  BA  1A    02    84  84  02    5  84  80    20  8E  89    A6  Fo  OF  A5        20    03  3F  F3    22  8E    A6  F    98  F    02  OF    A6  F    98  F    20    00  FF  F    OF  00  FF    BD    BD    00  18    18    45    FF    FO    BA    BA    0    Cg  FC            BA    BA    BA    BA    00  OF  OF  F    FF    D1    35      F 30 33  C3 CC CF  FF    6c    OF 00 FO  00 OF OF  FF F   00  FO      FF  OF FF FO    LEFFE       01    ALSB  ALSB  ROLA  ALSB  ROLA  LDA  JSR  DEC  BGT  PULS  DEC  BEQ  STA  LEAU  JSR  BRA  JSR  RTS    APPENDIX B  DISASSEMBLY OF SUPER EXTENDED BASIC 1 1    D U   VD1   H PCOUNT  LEFDB            V03  LEFFE   H  PCOUNT  501 0  LEA45  LEFD9  SELTASK        TABLE OF ADDRESSES OF HI RES PRINT DRIVERS    LF002  LF004  LF006  LF008      MODE 3               FDB  FDB  FDB  FDB    PRINT  PSHS  COMA  ANDA  STA  PULS  ANDA  ORA  STA  RTS                LF 45                           DRIVER 
146. E BACKGROUND COLOR  GROGRAM THE VIDEO RESOLUTION MODE      TABLE OF THE NUMBER OF BYTES PER HORIZONTAL ROW FOR EACH HSCREEN MODE    LE6CB FCB     HCLS   HCLS BNE  LDB  BRA   LE6D6 BSR      CLEAR THE HI RES GRAPHICS SCREEN TO THE COLOR    CLRHIRES TST  BEQ    80 160 80 160    LE6D6  H BCOLOR  CLRHIRES  LE7 E    HRMODE  LE6EF    B14    BRANCH IF NOT END OF LINE   GET THE BACKGROUND COLOR   CLEAR THE SCREEN TO THE BACKGROUND COLOR   EVALUATE AN EXPRESSION  SYNTAX CHECK FOR NOT  gt  16    IN ACCB  CHECK THE HI RES MODE  HR  ERROR IF IN THE 32 COLUMN MODE    SUPER EXTENDED BASIC UNRAVELLED II    1345  1346  1347  1348  1349  1358  1351  1352  1353  1354  1355  1356  1357  1358  1359  1368  1361  1362  1363  1364  1365  1366  1367  1368  1369  1378  1371  1372  1373  1374  1375  1376  1377  1378  1379  1388  1381  1382  1383  1384  1385  1386  1387  1388  1389  1398  1391  1392  1393  1394  1395  1396  1397  1398  1399  1400  1401  1402  1403  1404  1405  1406  1407  1408  1409  1410  1411  1412  1413  1414  1415  1416  1417  1418  1419  1420  1421  1422  1423  1424  1425  1426  1427  1428  1429  1430  1431  1432  1433  1434  1435  1436  1437  1438  1439  1440    E6DC  E6DE          1  E6E4  E6E6  E6E9  E6EB  E6EE  E6EF    6        E6F4  E6F6  E6FA  E6FC  E6FE  E701  E703  E705  E708  E70A  E70D      7        711    713    717      718    71      710  E71F  E721  E723  E726  E728  E72A  E72D  E72F    E731  E734  E736  E738  E73B  E73D  E73F  E741    E742  E744  E746  E748  E74B  E7
147. E CONTAINING THE PIXEL   GET THE LEAST SIGNIFICANT BYTE OF THE HORIZONTAL COORDINATE   KEEP BITS 0 2 WHICH ARE THE PIXEL POSITION IN THE BYTE   POINT TO THE TABLE OF TWO COLOR PIXEL MASKS   GET THE CORRECT PIXEL MASK   RESTORE THE REGISTERS    SAVE REGISTERS  GET THE NUMBER OF BYTES ROW  GET THE VERTICAL COORDINATE    SUPER EXTENDED BASIC UNRAVELLED II    1537  1538  1539  1540  1541  1542  1543  1544  1545  1546  1547  1548  1549  1550  1551  1552  1553  1554  1555  1556  1557  1558  1559  1560  1561  1562  1563  1564  1565  1566  1567  1568  1569  1570  1571  1572  1573  1574  1575  1576  1577  1578  1579  1580  1581  1582  1583  1584  1585  1586  1587  1588  1589  1590  1591  1592  1593  1594  1595  1596  1597  1598  1599  1600  1601  1602  1603  1604  1605  1606  1607  1608  1609  1610  1611  1612  1613  1614  1615  1616  1617  1618  1619  1620  1621  1622  1623  1624  1625  1626  1627  1628  1629  1630  1631  1632      826    827  E82A  E82C  E82E  E82F  E830  E831  E832  E834  E836  E838  E83B  E83D    E83F  E841  E843  E845  E846  E849  E84B  E84D  E84E  E84F  E851  E853  E855  E858  E85A    E85C  E85E  E862  E865  E868  E86B  E86E  E871  E873  E875  E876  E878  E879  E87B  E87E  E881    E882  E884  E888  E88C  E88E  E890  E892  E894  E896  E899  E89C  E89E                  2        4  E8A7  E8A9  E8AB  E8AD  E8B1  E8B3  E8B4  E8B5  E8B7  E8B9  E8BC  E8BE  E8C0  E8C3  E8C5  E8C9  E8CC  E8CE  E8D1  E8D3  E8D5  E8D7  E8D9  E8DB  E8DD  E8DF  E8E1  E8E3  EBES  E8E7  E8E9  
148. E SELECT TASK REGISTER 0  GETTASK1 FDB SELTASK1 SELECT TASK REGISTER 1  LE  1   JMP                  EXECUTE A ROM CARTRIDGE   AQ5E   SPARES FDB  0000 UNDEFINED  SPAREl FDB  0000 UNDEFINED  SPARE  FDB  0000 UNDEFINED    SET UP THE VIDEO CONTROL REGISTERS ACCORDING TO THE SELECTED WIDTH  SETTEXT PSHS           LBRN     RAMLINK RAM HOOK  LDX  IM TEXT POINT TO THE 32 COLUMN VIDEO MODE REGISTER TABLE  LDA     HRWIDTH CHECK THE HI RES TEXT MODE  BEQ     SETVIDEO BRANCH IF 32 COLUMN MODE  LDX  LE03B POINT TO THE 40 COLUMN VIDEO MODE REGISTER TABLE  CMPA 4901 VIDEO MODE WIDTH SET TO 40 COLUMN   BEQ     SETVIDEO YES  LDX  LE044 POINT TO THE 80 COLUMN VIDEO MODE REGISTER TABLE  BRA     SETVIDEO    VIDEO MODE REGISTER IMAGES FOR THE HI RES TEXT MODES    INITIAL VIDEO CONTROL REGISTER DATA FOR 32 COLUMN COCO COMPATIBLE MODE  IM TEXT FCB COCO MMUEN MC3 MC2 FF9g  LE  33 FCB  00 500 500 500 50   5  0 FF98  FCB 500 500    INITIAL VIDEO CONTROL REGISTER DATA FOR 40 COLUMN HI RES MODE  LEQ3B FCB     MMUEN MC3 MC2 FF9g  LE  3C FCB  03 505  512 500 500 508 FF98  FCB 500 500    INITIAL VIDEO CONTROL REGISTER DATA FOR 80 COLUMN HI RES MODE  LE  44 FCB     MMUEN MC3 MC2 FF9g  LE  45 FCB  03 515  12 500 500 508 FF98  FCB 500 500  SETGRAPH PSHS           LBRN     RAMLINK RAM HOOK  LDX   IM GRAPH POINT TO THE VIDEO MODE RAM IMAGE FOR HSCREEN MODES 1 2  LDY     4RESTABLE POINT TO THE VIDEO RESOLUTION TABLE  LDA     HRMODE GET THE HI RES GRAPHICS MODE  CMPA 4902 1 OR 2 ARE 40 COLUMN MODES  BLS 1  063 B
149. E THE BUFFER SIZE ARGUMENT   SAVE THE BUFFER SIZE   PUT BLOCK 6 4 INTO LOGICAL BLOCK 6  3650606  OF TASK REGISTER 1  ENABLE TASK REGISTER 1   GET THE NEW BUFFER NUMBER   CHECK FOR BUFFER ZERO   BRANCH IF NOT BUFFER ZERO   EMPTY BUFFER FLAG   RESET BUFFER SPACE TO EMPTY   EXIT COMMAND   POINT TO THE START OF THE BUFFER SPACE   GET THE FIRST TWO BYTES OF THE HEADER BLOCK  HB ADDR   IS THE BUFFER EMPTY    NO  CHECK FOR FIRST EMPTY HEADER SPOT   CHECK FOR ENOUGH FREE RAM IN THE BUFFER SPACE FOR THIS BUFFER    SUPER EXTENDED BASIC UNRAVELLED II    2305  2306  2307  2308  2309  2310  2311  2312  2313  2314  2315  2316  2317  2318  2319  2320  2321  2322  2323  2324  2325  2326  2327  2328  2329  2330  2331  2332  2333  2334  2335  2336  2337  2338  2339  2340  2341  2342  2343  2344  2345  2346  2347  2348  2349  2350  2351  2352  2353  2354  2355  2356  2357  2358  2359  2360  2361  2362  2363  2364  2365  2366  2367  2368  2369  2370  2371  2372  2373  2374  2375  2376  2377  2378  2379  2380  2381  2382  2383  2384  2385  2386  2387  2388  2389  2390  2391  2392  2393  2394  2395  2396  2397  2398  2399  2400    ED93  ED95  ED97  ED99  ED9B  ED9D  ED9F            EDA3  EDA5  EDA7  EDA9  EDAB  EDAD  EDBO  EDB3  EDB5  EDB7  EDB9  EDBB  EDBD  EDCO  EDC3  EDC4  EDC6  EDC8  EDCA  EDCC  EDCF  EDD1  EDD2  EDD4  EDD6  EDD8  EDDC  EDDF  EDE2    EDE5  EDE8  EDEA  EDEB    EDED  EDF   EDF2  EDF4  EDF6  EDFA  EDFE                  2        4        6  EEQ9                      EE11  EE13  EE
150. E THE HI RES TEXT MODE   EVALUATE TWO EXPRESSIONS   GET THE FIRST OF THE TWO EXPRESSIONS  COLUMN NUMBER   RESTORE THE FIRST ARGUMENT   GET BACK THE HI RES TEXT MODE   BRANCH IF NOT 40 COLUMN MODE   40 COLUMNS MAXIMUM IN 40 COLUMN MODE   DO A RANGE CHECK   80 COLUMNS MAXIMUM IN 80 COLUMN MODE   ILLEGAL FUNCTION CALL ERROR   GET THE SECOND ARGUMENT  ROW NUMBER    RANGE CHECK ON THE ROW NUMBER    FC  ERROR IF ROW NUMBER IS TOO LARGE   SAVE THE COLUMN AND ROW NUMBERS   PUT THE HI RES TEXT SCREEN INTO THE LOGICAL ADDRESS SPACE  SAVE THE NEW COLUMN AND ROW NUMBERS AS THOSE OF THE CURSOR  GET THE CURRENT CURSOR POINTER   GET THE CURSOR ATTRIBUTES RAM IMAGE   AND SAVE IT AS THE ATTRIBUTES IN THE OLD CURSOR POSITION  GET THE NUMBER OF CHARACTERS ROW   MULTIPLY BY TWO   TWO BYTES PER CHARACTER  CHAR AND ATTR   GET THE ROW OFFSET TO THE PROPER CHARACTER   POINT TO THE START OF THE HI RES TEXT SCREEN   ADD ROW OFFSET TO THE START OF THE HI RES TEXT SCREEN  RESTORE THE NEW CURSOR COLUMN AND ROW NUMBERS   MULTIPLY COLUMN NUMBER BY TWO   TWO BYTES PER CHARACTER  CHAR AND ATTR   SAVE COLUMN OFFSET IN ACCB   ADD THE COLUMN OFFSET TO THE CURRENT CURSOR POINTER   GET THE CURSOR ATTRIBUTES RAM IMAGE   FORCE UNDERLINE ATTRIBUTE   SAVE THE NEW CURSOR ATTRIBUTE IN THE HI RES TEXT SCREEN  SAVE THE NEW CURSOR POINTER   RESTORE THE NORMAL BASIC PROGRAM BLOCK TO LOGICAL BLOCK 1    IS THE HI RES TEXT MODE ENABLED    RAM HOOK    HP  ERROR IF HI RES TEXT MODE NOT ENABLED   PUT THE HI RES TEXT SCREEN INTO 
151. E221 FCC  LE227 FCC  LE22C FCC  LE22F FCC  LE232 FCC         APPENDIX B    DISASSEMBLY OF SUPER EXTENDED BASIC 1 1    LE1BF   B   LB262   B   FUNDIS20  LB2CE    BASIC 2 0 COMMAND DICTIONARY TABLE     WIDT   80  H    PALETT   80  E      HSCREE   80  N      LPOK   80  E    HCL   80  S    HCOLO   80  R    HPAIN   80  T    HCIRCL   80  E      HLIN   80  E    HGE   80  T    HPU   80  T    HBUF   80  F    HPRIN   80  T    ER   80  R    BR   80  K    LOCAT   80  E    HSTA   80  T    HSE   80  T    HRESE   80  T    HDRA   80  W    CM   80  P    RG   80  B    ATT   80  R       BASIC 2 0 COMMAND DISPATCH TABLE            COMDIS20 FDB    LE238 FDB  LE23A FDB  LE23C FDB  LE23E FDB  1  240 FDB  LE242 FDB  LE244 FDB  LE246 FDB  LE248 FDB  LE24A FDB  LE24C FDB  LE24E FDB  LE258 FDB  LE252 FDB  LE254 FDB  LE256 FDB  LE258 FDB  LE25A FDB  LE25C FDB  LE25E FDB  LE268 FDB  LE262 FDB         WIDTH  PALETTE  HSCREEN  LPOKE  HCLS  HCOLOR  HPAINT  HCIRCLE  HLINE  HGET  HPUT  HBUFF  HPRINT  ERR  BRK  LOCATE  HSTAT  HSET  HRESET  HDRAW  CMP   RGB  ATTR      BASIC 2 0 FUNCTION DICTIONARY TABLE            FUNDIC2  FCC    LE269 FCC  LE26F FCC  LE275 FCC  LE279 FCC          LPEE    80  K    BUTTO    80  N                  80                  80  0     ERLI    80  N       BASIC 2 0 FUNCTION DISPATCH TABLE            BRANCH IF ERNO  ERLIN   SAVE THE TOKEN COUNTER   EVALUATE AN EXPRESSION IN PARENTHESIS   RESTORE THE TOKEN COUNTER   POINT TO ENHANCED BASIC S FUNCTION DISPATCH TABLE  RE ENTER THE MAIN STREAM
152. EA36  EA38  EA3A  EA3C    EA3D  EA3E      40      42  EA44    EA45  EA47  EA48    EA49  EA4B  EA4F  EA53  EA55  EA57  EA59      5                  62  EA64  EA66  EA68  EA6A  EA6D      70  EA73  EA75  EA78  EA7A  EA7C  EA7F  EA82  EA84  EA86  EA89  EA8C  EA8E      90      92      95      97      99      9        90  EA9F        1                  5  EAA7  EAAA  EAAC  EAAF        1                  5        7        9            EABD  EAC  EAC2  EAC4        5        7  EAC8  EAC9  EACB  EACD  EAD    EAD2  EAD4  EAD6  EAD9  EADB  EADD  EADF  EAE1  EAE3  EAE5  EAE7    EAE9    44  44  24  86  30  39    43  81  26  30  39    D6  3A  39    00  10  10  81  26  90  BD  BD  BD  AE  9F  AE  9F  BD  BD  CE  AF  BD  86  97  BD  8E  9D  27  BD  BD  96  8B  97  BD  96  81  22  1F  30  9F  C6  D7  D7  BD  34  BD  DD  35  34  9E  9F  9E  9F  CE  84  27  50  CB  58  58  33  34  BD  35  33  34  BD  35  A6  84  27  81  27  1E  9F    1F    FB  Cg  01          02  01      9    E6  27  21  40  02  9                  7  C4  CB  42  CD  B2  B7  00  C4  E7  01  C2  E7  01    5  OF  B2  B1  4F  08  4    B7  E6  02  94  10  8B  D1  01  C2  D8  EB  06        09  06  06  C3  BD  C5  BF  EB  01  93    98    C5  40        40        10        20  E4  03  06  03  02  12  C3    20    FC       15 AD    60  04  AD    6D  3D  CF  B      18  00    60    41    40    7B    7B    9B    BD    BD    APPENDIX B  DISASSEMBLY OF SUPER EXTENDED BASIC 1 1      ADJUST X AND ACCA TO THE NEXT PIXEL TO THE RIGHT FOR HSCREEN 1 
153. EC86  EC87  EC88  EC8A  EC8C  EC8E  EC91  EC94  EC96  EC99  EC9B      9          1                    5  ECA8  ECAA  ECAC  ECAD  ECAE  ECB1  ECB3    ECB5    ECB7  ECBA  ECBD    ECBE                  5    ECC7  ECCB  ECCD  ECCF  ECD1  ECD3  ECD5  ECD7  ECD9  ECDB  ECDD                  2        4  ECE6  ECE8  ECEA  ECEC  ECEE              ECF1  ECF5    18  35  OF  18  30  9F  DF  97  27  2B    5C  01  23  5F  5D  27    5A    D7  BD  27  18  25  30  BD  BD  BD    43  53  D3  DD  2F  BD  BD  26  cc  20  BD  BD  8D  20    BD  30  9F  43  53  83  2F  1F    8D    7E  BD  39    BD  18  20    18  AD  DE  9E  2B  9    22  34  8    27  BD  35  33  AD  20  35  1F  1F  93  39    AD  TF     DE  56  DB  DF  01  BD  01  07  58  06    06  05    DD    Cg  EC  11  83  05  1                        01  01  17    9        05  FF  ED  E9  ED  24  DE    E9  8B  BD    00  04  01                  EQ    ED  8E  06    8E  A4  8A  BD  17  D3  13  60  16  OB  E7  60  41    4    9  60  30  01  8A    9F  89    DC    DC    BE    00 03    15  01  2        1  F1    FF    BF  3A    Bl    01    4A  FF    3A  E9 BF    E9 B1    92    00 D9    APPENDIX B ORIGIN SPECTRAL ASSOC  DISASSEMBLY OF SUPER EXTENDED BASIC 1 1 REVISED 12 26 1999 WALTER K ZYDHEK    LDS TMPSTK GET STACK POINTER BACK  LEC51 PULS A B X U GET DATA FOR NEXT LINE SEGMENT TO CHECK FROM THE STACK  CLR CHGFLG CLEAR THE CHANGE FLAG  STS TMPSTK TEMP SAVE THE STACK ADDRESS  LEAX  01    ADD        TO  START HORIZONTAL COORD  1   STX HORBEG PIT IT AT  CURR
154. EFINITIONS  BLOCK 6 0 EQU  30   BLOCK 6 1 EQU  31   BLOCK 6 2 EQU  32   BLOCK 6 3 EQU  33    APPENDIX A  MEMORY MAP    BACKSPACE  ENTER KEY  ESCAPE CODE  LINE FEED  FORM FEED  SPACE  BLANK     ORIGIN SPECTRAL ASSOC  REVISED 12 26 1999 WALTER K ZYDHEK    STACK BUFFER ROOM    DEBOUNCE DELAY    MAX NUMBER OF CHARS IN A BASIC LINE  MAXIMUM MS BYTE OF LINE NUMBER    RAM LOAD LOCATION FOR THE DOS COMMAND  NUMBER OF BYTES IN DIRECTORY ENTRY  LENGTH OF SECTOR IN BYTES    MAXIMUM NUMBER    OF SECTORS PER TRACK    LENGTH OF TRACK IN BYTES  MAX NUMBER OF TRACKS  FILE ALLOCATION TABLE LENGTH       MAXIMUM NUMBER    OF GRANULES    FILE CONTROL BLOCK LENGTH    INPUT FILE TYPE    OUTPUT FILE TYPE  RANDOM DIRECT FILE TYPE         CODE OF BRN    SKIP ONE BYTE    OP CODE OF CMPX 4   SKIP TWO BYTES  OP CODE OF LDA     SKIP THE NEXT BYTE    AND LOAD THE VALUE OF THAT BYTE INTO ACCA    THIS    IS USUALLY USED TO LOAD ACCA WITH A NON ZERO VALUE    MAXIMUM NUMBER  DUMMY RAM LINK  ADDRESS OF THE  ADDRESS OF THE  ADDRESS OF THE  FIRST ENHANCED  FIRST ENHANCED    OF ROWS IN HI RES PRINT MODE   VECTOR   HI RES SCREEN IN THE CPU S MEMORY SPACE   GET PUT BUFFERS IN THE CPU S MEMORY SPACE  HI RES GRAPHICS STACK IN THE CPU S MEMORY SPACE  BASIC TOKEN NUMBER   BASIC FUNCTION TOKEN NUMBER BUG   SHOULD BE  28    HI RES CURSOR CHARACTER    EQUATES  ADDRESS OF THE  NUMBER OF THIS    NEXT BUFFER   2 BYTES  BUFFER   1 BYTES    NUMBER OF BYTES IN THE BUFFER   2 BYTES  NUMBER OF BYTES IN THIS HEADER                
155. ENT HORIZONTAL COORD ADDRESS   STU VD1 SAVE LENGTH OF PARENT LINE  STA VD7 SAVE UP DN FLAG  BEQ LECBA EXIT ROUTINE IF UP DN FLAG   0  BMI LEC6A BRANCH IF UP DN FLAG    DOWN    CHECK ONE LINE BELOW CURRENT DATA  INCB INCREMENT VERTICAL COORD  CMPB  VD6 COMPARE TO MAXIMUM VERTICAL COORD  BLS LEC6E BRANCH IF NOT GREATER   PROCESS LINE  CLRB SET VERTICAL COORD TO ZERO TO FORCE WRAP AROUND  LEC6A TSTB CHECK VERTICAL COORD  BEQ LEC4A PROCESS ANOTHER BLOCK OF PAINT DATA IF WRAP AROUND    DISCARD ANY LINE BELOW VERTICAL COORD      OR ABOVE MAX VER COORD  DECB DEC VERTICAL COORD    PROCESS A HORIZONTAL LINE THAT WAS STORED ON STACK   LIMIT CHECK HAVE BEEN DONE  LEC6E STB VERBEG 1 SAVE CURRENT VERTICAL COORD  JSR LECBE PAINT FROM HORIZONTAL COORD TO ZERO OR BORDER  BEQ LEC86 BRANCH IF NO PIXELS WERE PAINTED  CMPD  3 SEE IF FEWER THAN 3 PIXELS WERE PAINTED  BCS LEC88 BRANCH IF NO NEED TO CHECK FOR PAINTABLE DATA  LEAX    2 X MOVE HORIZONTAL COORD TWO PIXELS TO THE LEFT  JSR LED15 SAVE A BLOCK OF PAINT DATA IN THE DIRECTION OPPOSITE TO UP DN FLAG  LEC80 JSR LED 1 CONTINUE PAINTING LINE TO THE RIGHT  LEC83 JSR LED2E SAVE A BLOCK OF PAINT DATA IN THE SAME DIRECTION AS UP DN FLAG      THIS CODE WILL INSURE THAT THE CURRENT LINE IS    EXAMINED TO THE RIGHT FOR PAINTABLE PIXELS FOR A    LINE EQUAL TO THE LENGTH OF THE PARENT LINE    LEC86    LEC88    LEC9B    PAINT                  LECA5    LECB7  LECBA      PAINT  LECBE      PAINT  LECC7  LECCD    LECD1    LECE8  LECEA      CHECK    COMA    
156. ENTERED FROM  ALINK6B LBCS 18800   JMP L883F      BASIC S LINE INPUT PATCH ENTERED FROM  A3C2    ALINK16 CMPA  93  ORCC 8501  BNE LE426  PSHS          LDA HRMODE  BEQ LE424  CLR     HRMODE  JSR 5               LE424 PULS           LE426 JMP LA3C6      BREAK CHECK PATCH ENTERED FROM  ADF      ALINK15 CMPA 4903  BEQ     LE430  JMP     LADF4  LEA30 10   4501  STA     H ERRBRK  LDA CURLIN  INCA  BEQ     LE43F  LDD     H ONBRK  BNE     LE449  LE43F LDA               BEQ 1  446  JSR SETTEXT  LEA46 JMP LAED9  LE449 STD     BINVAL  TST     H ERRBRK  BNE    LE458  LDS                LDD      LADC4  PSHS        LE458 JSR  LAEEB  LEAX   01 X  LDD     BINVAL  CMPD CURLIN  BHI LE466  LDX     TXTTAB  LE466 JSR 1405  LBCS LE51E  JMP     LAEBB    ORIGIN SPECTRAL ASSOC  REVISED 12 26 1999 WALTER K ZYDHEK    CHECK FOR THE  GO  AND THE  TO  TOKENS   GET THE NEXT CHARACTER FROM BASIC S INPUT LINE   STRIP THE  GOTO  LINE NUMBER FROM THE BASIC INPUT LINE  GET THE  GOTO  LINE NUMBER   SAVE IT   GET THE CURRENT LINE NUMBER   AND SAVE IT AS THE SOURCE LINE NUMBER     8834         MULTIPLY THE TEMPORARY     ACCUMULATOR BY TWO    OV  OVERFLOW ERROR   BA92   DECREMENT THE SHIFT COUNTER  LOOP UNTIL DONE   MASK OFF ASCII     ADD DIGIT TO TEMPORARY     ACCUMULATOR AND SAVE IT     8843   58800     883F     BREAK KEY DEPRESSED    SET THE CARRY FLAG   BRANCH IF NOT THE BREAK KEY   SAVE REGISTERS   CHECK THE HI RES GRAPHICS MODE   BRANCH IF IN COCO COMPATIBLE MODE   FORCE TO COCO COMPATIBLE MODE   PROGRAM THE 
157. ER EXTENDED BASIC 1 1 REVISED 12 26 1999 WALTER K ZYDHEK      LPEEK  LPEEK BSR LE58E CONVERT          INTO AN EXTENDED ADDRESS  LBRN     RAMLINK RAM HOOK  CMPB  4BLOCK7 7 COMPARE TO HIGHEST LEGAL BLOCK NUMBER  LBHI  ILLFUNC ILLEGAL FUNCTINO CALL ERROR IF BLOCK NUMBER TOO BIG  ORCC 4950 DISABLE INTERRUPTS  LBSR  SELBLOKO GET THE INTERPRETED BLOCK NUMBER INTO CPU BLOCK 6  LDB X GET THE VALUE BEING LPEEKed  LBSR  SETMMU RESTORE THE MMU REGISTERS TO WHAT BASIC EXPECTS  ANDCC   AF ENABLE THE IRQ AND FIRQ INTERRUPTS  JMP LB4F3 CONVERT THE VALUE IN ACCB INTO A FLOATING POINT NUMBER    CONVERT FPA   INTO A  LONG  ADDRESS    THE  LONG  ADDRESS WIL BE RETURNED IN TWO PIECES  THE LOW ORDER 13 BITS    WILL BE IN THE X REGISTER  AND THE HIGH ORDER 6 BITS  WHICH ARE THE    BLOCK NUMBER  WILL BE IN ACCB    LE58E PSHS A    LDA              GET THE EXPONENT      FPAS  CMPA 4993 EXPONENT OF 512K 1  BLS LE59A BRANCH IF     512K 1  LDB  BLOCK7 7 1 MAKE IT ONE BLOCK BIGGER THAN THE BIGGEST ALLOWABLE  BRA LESAF EXIT ROUTINE  LE59A JSR LBCC8 DE NORMALIZE           LDD FPA0 2 GET THE TWO LEAST SIGNIFICANT BITS                ANDA   1F MASK OFF THE 3 HIGH ORDER BITS  TFR D X SAVE THE 13 LOW ORDER BITS IN X REGISTER  LDD          1 GET THE SECOND AND THIRD BYTES IF           ASRA  RORB  ASRA  RORB  ASRA  RORB  ASRA NOT NECESSARY WITH MAXIMUM OF 512K RAM  RORB  ASRA NOT NECESSARY WITH MAXIMUM OF 512K RAM  RORB SHIFT ACCD RIGHT 5 TIMES   THE BLOCK NUMBER IS IN ACCB  LESAF PULS A PC    BUTTON  BUTTON JSR
158. ERENCE NEGATIVE  MAKE VERTICAL DIFFERENCE ZERO AND MOVE THE DRAW POSITION    NOW ACCD   VALUE OF THE SUBCOMMAND  MAKE VER DIFF    EXCHANGE HOR     VER DIFFS AND MOVE DRAW POSITION    NOW ACCD   VALUE OF THE SUBCOMMAND  MAKE HORIZONTAL DIFFERENCE NEGATIVE     0  HORIZONTAL DIFFERENCE   0   SWAP HOR AND VER DIFFERENCES   GO MOVE THE DRAW POSITION    INTERPRET CURRENT COMMAND AS IF IT WERE A BASIC VARIABLE    SEE IF AT LEAST FOUR BYTES OF FREE RAM ARE LEFT   GET CURRENT COMMAND LENGTH   GET CURRENT COMMAND COUNTER   SAVE THEM ON THE STACK   EVALUATE NUMERICAL VALUE IN COMMAND LINE    OR VER DIFFERENCE BY SCALE FACTOR  DIVIDE PRODUCT BY 4 AND RETURN VALUE IN ACCD    LF451          4504  LBCC  ILLFUNC  STB     ANGLE  LBRA LF3CF    CHANGE SCALE  LFA5C           63  LBCC  ILLFUNC  STB     SCALE  LBRA LF3CF    315 DEGREES  LF467 10   VD3  BSR     NEGACCD  BRA LF46F    135 DEGREES  LF46D 10       VD3  LF46F TFR D X  BRA LF4D4    45 DEGREES  LFA73 10    VD3  TFR D X  BSR     NEGACCD  EXG        BRA LF4D4    225 DEGREES  LF47D LDA     3  TFR D X  BSR     NEGACCD  BRA LF4D4    60 RIGHT  LF485 10       3  LF487 LDX 49  BRA LF4D4    GO LEFT  LF48C LDA     3  BSR     NEGACCD  BRA LF487    GO DOWN  LF492 10   VD3  BRA LF49A    G0 UP  LFA96 10       VD3  BSR     NEGACCD  LFA9A LDX 48  EXG X D  BRA LF4D4    EXECUTE A COMMAND SUB STRING  LFAAl JSR 1  611  LDB 4802  JSR  LAC33  LDB VD8  LDX         PSHS        JMP    LF388    MULTIPLY HOR  LFAB2 LDB SCALE  BEQ LF4D1  CLRA  EXG D X  STA   S  BPL 
159. ERROR CODES      52         FCC  HR     LE4CE FCC      HP     LINE INTO          FROM  AD3F  ALINK19 PSHS        CLRA  CLRB  STD     OLDPTR  STD     H ONBRK  STD     H ONERR  STD     H ERLINE  LDA     4 FF  STA     H ERROR  PULS A B  JMP     LAD43    ERNO  ERNO CLRA  LDB     H ERROR  CMPB   FF  BNE LE4F4  SEX  BRA LE4FA  LEAFA     CMPB   F1  BNE LE4F9  COMB  LEAF9 ASRB  LEAFA     JMP GIVABF    ERLIN  ERLIN LDD     H ERLINE      BASIC S MAIN    ALINK21    LE51E    LE528  LE52B    ALINK17      LPOKE  LPOKE    BRA LE4FA    JSR SETTEXT    JSR  8956  ORCC   50  LDA  BLOCK6 4  STA MMUREG  LDD     4 FFFF  STD 0  LDA  BLOCK7 4  STA     MMUREG  ANDCC   AF  JMP     LAC76  TST     H ERRBRK  BEQ 1  528  LDD     H ONBRKS  BRA     LE52B  LDD     H ONERRS  STD CURLIN  LDB     47 2  JMP     LAC49      INPUT PATCH ENTERED FROM  B  3D  LDD     H ONBRK  LBEQ LAE11  PSHS        LDA     4 01  STA     H ERRBRK  PULS A B  LBRA LE449  JSR LB141  LBRN     RAMLINK  BSR LE58E    CMPB  4BLOCK7 7  LBHI  ILLFUNC  PSHS         JSR                   JSR  EVALEXPB  TFR         PULS B X   CMPB  4BLOCK7 7  LBHI  ILLFUNC    ORCC 4550  LBSR SELBLOK    STA  X   LBSR  SETMMU  ANDCC   AF   RTS    APPENDIX B  DISASSEMBLY OF SUPER EXTENDED BASIC 1 1    B12    ORIGIN SPECTRAL ASSOC  REVISED 12 26 1999 WALTER K ZYDHEK    ALSO PUT IT ON THE STACK TEMPORARILY   GET THE CURRENT LINE NUMBER   SAVE THE LINE NUMBER WHERE THE ERROR OCCURRED   GET BACK THE ERROR NUMBER   WAS IT AN OUT OF DATA ERROR    BRANCH IF NOT   THE INPUT
160. ERROR GOTO COMMAND  RVEC17 RMB 3  AC49  88      C24D  C265 ERROR DRIVER   RVEC18 RMB 3  AE75  829C  C990  CA3E RUN   RVEC19 RMB 3  BD22  87EF ASCII TO FLOATING POINT CONVERSION          20 RMB 3             82B9  C8B   BASIC S COMMAND INTERPRETATION LOOP  RVEC21 RMB 3  A8C4 RESET SET POINT COMMANDS  RVEC22 RMB 3  4910 CLS      8162 EXBAS  SECONDARY TOKEN HANDLER  E  8AFA EXBAS  RENUM TOKEN CHECK       975C  C29A  C2B2 EXBAS  GET PUT   RVEC23 RMB 3  B821  8304 CRUNCH BASIC LINE   RVEC24 RMB 3  B7C2 UNCRUNCH BASIC LINE   STRSTK RMB 8 5 STRING DESCRIPTOR STACK   CFNBUF RMB 9 CASSETTE FILE NAME BUFFER   CASBUF RMB 256 CASSETTE FILE DATA BUFFER   LINHDR RMB 2 LINE INPUT BUFFER HEADER       A6    SUPER EXTENDED BASIC UNRAVELLED II APPENDIX A ORIGIN SPECTRAL ASSOC             MEMORY MAP REVISED 12 26 1999 WALTER K ZYDHEK  0445 020   LINBUF RMB LBUFMX 1 BASIC LINE INPUT BUFFER  0446 0307 STRBUF RMB 41 STRING BUFFER  0447  0448 0400 VIDRAM RMB 200 VIDEO DISPLAY AREA  0449  0450  START OF ADDITIONAL RAM VARIABLE STORAGE  DISK BASIC ONLY   0451 0600 DBUF   RMB SECLEN 1 0 BUFFER  8  0452 0700 DBUF1 RMB SECLEN I 0 BUFFER  1  0453 0800 FATBLO RMB     FATLEN FILE ALLOCATION TABLE   DRIVE 0  0454 084A FATBL1 RMB FATLEN FILE ALLOCATION TABLE   DRIVE 1  0455 0894            2 RMB              FILE ALLOCATION TABLE   DRIVE 2  0456 08                  RMB     FATLEN FILE ALLOCATION TABLE   DRIVE 3  0457 0928 FCBV1 RMB  16 2 FILE BUFFER VECTORS  15 USER  1 SYSTEM   0458 0948 RNBFAD RMB 2 START OF
161. ET PRESET FLAG TO PSET   FIRST TIME FLAG   SET TO 6 AFTER ARC DRAWN   EVALUATE CIRCLE START POINT  OCTANT  SUBARC    SAVE START POINT   EVALUATE CIRCLE END POINT  OCTANT  SUBARC    SAVE END POINT   GET BACK START POINT   STORE CURRENT CIRCLE POSITION   GET END HORIZONTAL COORD   MAKE IT THE NEW START   GET END VERTICAL COORD   MAKE IT THE NEW START   POINT TO TABLE OF SINES AND COSINES   TEST OCTANT NUMBER   BRANCH IF EVEN    CONVERT 0 7 TO 8 1 FOR ODD OCTANT NUMBERS  MUL BY 2   DO IT AGAIN  FOUR BYTES PER TABLE ENTRY   POINT TO CORRECT TABLE ENTRY   SAVE SIN COS TABLE ENTRY   CALCULATE HORIZONTAL OFFSET   GET BACK SIN COS TABLE POINTER   MOVE TO COSINE  VERTICAL    SAVE HORIZONTAL OFFSET   CALCULATE VERTICAL OFFSET   PUT HORIZONTAL OFFSET IN Y   GET OCTANT NUMBER   MASK OFF BOTTOM TWO BITS   BRANCH IF OCTANT 6 OR 4   NOW SEE IF BOTH BITS WERE SET   BRANCH IF OCTANT 3 OR 7   SWAP HORIZONTAL AND VERTICAL OFFSETS  SAVE HORIZONTAL OFFSET    PUT CALCULATED VERTICAL OFFSET INTO ACCD    SUPER EXTENDED BASIC UNRAVELLED II    1921  1922  1923  1924  1925  1926  1927  1928  1929  1938  1931  1932  1933  1934  1935  1936  1937  1938  1939  1940  1941  1942  1943  1944  1945  1946  1947  1948  1949  1950  1951  1952  1953  1954  1955  1956  1957  1958  1959  1960  1961  1962  1963  1964  1965  1966  1967  1968  1969  1978  1971  1972  1973  1974  1975  1976  1977  1978  1979  1980  1981  1982  1983  1984  1985  1986  1987  1988  1989  1990  1991  1992  1993  1994  1995  1996  1997  1998
162. F    4E  52  20  4D  50  00  49  54  20  20  20    4    39  39  20    4E  49  20  4D  4F    4    52  20  4D  50  00    21  FE    6                    01  FE  34  FF  FF  00  38  FF  AD    EF  1C        2    B7  AF  9F  81  07  9F  A5  01    62  B2    EC  9F  AF  2B  FE  68  FE    53  45  43  42  32    50  38  38  54    44  43  46  49  46    44  4    53  53  2E  00  53  45  43  42  32    50  38  38  54    44  43  46  49  46    44  4    53  53    2E  00    1C  08    ac  GE  08  OA        FF    AG  19      B  45    77    67    BE    11    4B  4E  4F  41  2E    52  31  36  41    45  45  52  43  54    20  57  59  20    4B  4E  4    41  2      52  32  36  41    45  45  52  43  54    20  57  59  20    71    20  44  4C  53  38    2E  2C  20  4E    52  4E  4F  52    4D  41  53  43    20  44  4C  53  31    2E  2C  20  4E    52  4E  4F  52    4D  41  53  43    45  45  4F  49    20  20  42  44    20  53  4D  4      49  52  54  4      45  45  4    49    20  20  42  44    20  53  4D  4      49  52  54  4      DISK20MS FCC  LE2C   FCB  LE2C1 FCC  LE2DA FCB  LE2DB FCC  LE2F7 FCB  MWAREMS         LE313 FCB  DISK21MS FCC  LE333 FCB  LE334 FCC  LE33D FCB  LE33E FCC  LE36A FCB  LE36B FCC  LE386 FCB    APPENDIX B    DISASSEMBLY OF SUPER EXTENDED BASIC 1 1     DISK EXTENDED COLOR BASIC 2 0       00     COPR  1981  1986 BY TANDY      00   UNDER LICENSE FROM MICROSOFT      00          MICROWARE SYSTEMS CORP       00   00   00   DISK EXTENDED COLOR BASIC 2 1      00     COPR  1981  1986 BY TANDY     
163. F872  F874  F877  F879    F87B  F87E    880    883  F885  F888  F88A  F88C  F88F  F891  F894  F896  F898  F89B  F89D  F89F  F8A2    F8A3  F8A5  F8A7  F8A9  F8AB  F8AE    8  1  F8B4  F8B7  F8B9  F8BC  F8BE  F8C2    F8C3  F8C5  F8C7  F8CA  F8CD    F6  CA  30  ED  BF  FC  4C  B1  25  5C  F7  4F  20    34  86  F6  ED  34  B6  4C  B7  Bl  35  25  BF  7F  7C  86  F6  CA  ED  35    34  8      6  81  26          ED  8C  25  8D  35    EC  ED  8C  25  20    7F  86  B7  86  F6  34  ED  BC  26  7F  35  86  F6  CA  ED  BF  39    00  26  00  26  BD  7E  17  7D  34  17  35  18  39    00  26  BD  7E  C6    FE  40  02  84                        2            DB    06  20        81  02                      02                          20        40  84  86    06  20        28  BE    88  81  27  F6  OF  86    89  81  2E  F5  EF    FE  17  FE  20  FE  18  81  FE  F9  FE  18  20  FE  40  84  FE    6F  04  E7  06          9              01        01  26    E7  06    5    9  4      08    00  02    04    03    08    02  02  04    00  02  03    08    00  04    50    30    00 AQ    60    02    03    08    06    02    08    00    5F  5F  BE  02    BC    CB 96    54  05    LDB  ORB  LEAX  STD  STX  LDD  INCA  CMPA  BCS  INCB  STB  CLRA  BRA    DO A HI RES  LF827 PSHS  LDA  LDB  STD  PSHS  LDA  INCA  STA  CMPA  PULS  BCS  STX  CLR  INC  LDA  LDB  ORB  STD  PULS    LF82E      SCROLL THE S   LF854 PSHS  LDX  LDA  CMPA  BNE      SCROLL A 48  LF868 LDD  STD  CMPX  BCS  BSR  PULS    LF86A      SCROLL AN 88   LF8
164. FDB PATCH5 816C  LC278 FCB 504  LC271 JMP ALINK5 E1A6  NOP     PATCHES 6   11 MODIFY THE WAY A   amp H  VARIABLE IS PROCESSED    PATCH 6  LC275 FDB PATCH6 8834  LC277 FCB  12  LC278 JMP ALINK6A E3F8  CLR          1  CLR FPA0 2  CLR FPA0 3  BRA   PATCH7 4   PATCH6 9    CLR FPA    BRA  PATCH6A  PATCH6 13    JMP ALINK6B      PATCH 7  LC28A FDB PATCH7  87EB  LC28C FCB 507  LC28D BRA   PATCH6 3     PATCH7    NOP  RTS  LDX  FPA0 1    PATCH 8  LC294 FDB PATCH8 880C  LC296 FCB 02  LC297 BRA   PATCH6 15              8     PATCH 9  LC299 FDB PATCH9 8826  LC29B FCB 02  LC29C BCS  CPATCH6 11  PATCH9     PATCH 10  LC29E FDB           10 87  7  LC2A8 FCB 02  LC2A1 BNE             743            10      PATCH 11   NEEDED BECAUSE PATCH 5 REMOVED AN RTS WHICH THIS ROUTINED USED  LC2A3 FDB           11 886    LC2A5 FCB 02  LC2A6 BNE             743            11      PATCH 12   EX BASIC S COPYRIGHT MESSAGE  LC2A8 FDB PATCH12 80B2          LC2AA FCB 03    B4    ORIGIN SPECTRAL ASSOC  REVISED 12 26 1999 WALTER K ZYDHEK    SUPER EXTENDED BASIC UNRAVELLED II    0385 C2AB 7E E2 88  0386   0387   0388  C2AE 81       0389 C2B0 01   0390   2  1 00   0391   0392   0393   2  2 97 03  0394  C2B4 03   0395  285 7E      89  0396   0397   0398   2  8 AD F    0399  C2BA 04   0400   2     7E E4 29  0401   2     12   0402   0403   0404  C2BF      C2  0405   2  1 04   0406 C2C2 7E E4 13  0407  C2C5 12   0408   0409   0410   2  6 B   3D  0411  C2C8 02   0412  C2C9 E5 32  0413   0414   0415   2     AF 42  0416 C2
165. FE17  FE18  FE19  FE69  FEED    FEEE  FEEE  FEFT  FEF4  FEF7  FEFA  FEFD         0         0    FF 1    FF02                APPENDIX A ORIGIN SPECTRAL ASSOC  MEMORY MAP REVISED 12 26 1999 WALTER K ZYDHEK           END OF RAM   ORG  8000  RMB  2000 EXTENDED BASIC ROM  RMB  2000 COLOR BASIC ROM   ROMPAK EQU 3   DOSBAS RMB  2000 DISK BASIC ROM ENHANCED BASIC INIT CODE  RMB  1F00 ENHANCED BASIC     START OF ADDITIONAL VARIABLES USED BY SUPER EXTENDED BASIC   H CRSLOC RMB 2 CURRENT LOCATION OF CURSOR   H CURSX RMB X POSITION OF CURSOR   H CURSY RMB Y POSITION OF CURSOR   H COLUMN RMB COLUMNS ON HI RES ALPHA SCREEN   H  ROW RMB ROWS ON HI RES ALPHA SCREEN   H DISPEN RMB 2 END OF HI RES DISPLAY SCREEN   H CRSATT RMB CURRENT CURSOR S ATTRIBUTES  RMB UNUSED   H FCOLOR RMB FOREGROUND COLOR   H BCOLOR RMB BACKGROUND COLOR   H ONBRK RMB 2 ON BRK GOTO LINE NUMBER   H ONERR RMB 2 ON ERR GOTO LINE NUMBER   H ERROR RMB ERROR NUMBER ENCOUNTERED OR  FF  NO ERROR    H ONERRS      2 ON ERR SOURCE LINE NUMBER   H ERLINE RMB 2 LINE NUMBER WHERE ERROR OCCURRED   H ONBRKS RMB 2 ON BRK SOURCE LINE NUMBER   H ERRBRK RMB STILL UNKNOWN  HAS TO DO WITH ERR  BRK   H PCOUNT RMB PRINT COUNT  CHARACTERS TO BE HPRINTED   H PBUF RMB 80 PRINT BUFFER  HPRINT CHARS  STORED HERE  RMB 32 UNUSED   INT FLAG RMB INTERRUPT VALID FLAG     NOT VALID   55 VALID     TABLE OF JUMP VECTORS TO INTERRUPT SERVICING ROUTINES           JUMP   INT SWI3 RMB 3   INT SWI2 RMB 3   INT FIRQ RMB 3   INT  IRQ RMB 3   INT SWI RMB 3   INT 
166. FF     090 C 10 6 20 30 0 40 0 50 P 68   70 p  01    11 e 21   31 1 41 A 51 Q 61 a 7l q  02    12 E 22   32 2 42 B 52 R 62 b 72 r  03    13 6 23     33 3 43 C 53 S 63 c 73 5  04     14 6 24   34 4 44 D 54 T 64 d 74 t  05    15 o 25   35 5 45 E 55 U 65 e 75 u  06    16    26 8 36 6 46 F 56 V 66 f 76 v  07    17    27  37 7 47 G 57 W 67 g 77 w  08    18 9 28   38 8 48 H 58 X 68 h 78 x  09    19 0 29   39 9 49 I 59 Y 69 I 79 y  gA    1      2A   3A   4A J      7      j      7  OB    1B 8 2B   3B   4B K 5B   6B k 7B    gc 1 1C    2C   3C    4C L 5C   N 66 1 7C    00 B 1D   2D   3D   4D M 5D   6D m 7D      E A 1E 2 2E 3D    4E N 5E   6E n            OF A      f eF   3F   4F 0 5F     6F o         LOW RESOLUTION COCO COMPATIBLE CHARACTER SET    Listed below is the character set available when in the CoCo compatible  text mode  WIDTH 32   Graphics blocks are printed for character values  80  FF   The character set given below assumes that bit 4 of  FF22 is set  If that bit  is clear  then the characters in the range of    1F must be replaced by the  corresponding characters in the range  40  5F in inverse video     090   10 p 20 30 0 40    50 P 60 70 0  01 a 11 q 21   31 1 41 A 51 Q 61   71 1  02 b 12 r 22   32 2 42 B 52 R e2   72 2  03 c 13 s 23     33 3 43 C 53 S 63   73 3  04 d 14 t 24   34 4 44 D 54 T 64   74 4  05 e 15 u 25   35 5 45 E 55 U 65   75 5  06 f 16 v 26 8 36 6 46 F 56 V 66  amp  76 6  07 g 17 w 27   37 7 47 G 57 W 67   7754  08 h 18    28   38 8 48 H 58 X 68   78 8  0
167. FF  CE  44  96  42  96  40    41  16  42  62  06  01    8  62  El  42  B8  42  29  03  B8  29  El  EB    C5  92    64  A6  00    4A   4  26  1F  80  7F  62  07  62    1  E7  29  El  EQ    E2  04  F8  04  9F  E2  E2  AD    52  04  5A  04  9F  52  04    91  44    44    91  DF FF    1B  D7    58    9D    D7    5D    00 00 00 00    D6 7      58    5D    01 37    36  D4    91 3C    APPENDIX B  DISASSEMBLY OF SUPER EXTENDED BASIC 1 1      WAS SELECTED AS THE ACTIVE TASK REGISTER    5        5      STD 40  LDD S  STD V42  LDD 902 5  STD V44  CLRB   STB INIT1  LDS V44  LDD        PSHS        LDD 40  ANDCC   AF  RTS    ORIGIN SPECTRAL ASSOC  REVISED 12 26 1999 WALTER K ZYDHEK    TEMPORARILY SAVE ACCD   GET THE RETURN ADDRESS OFF THE STACK   AND TEMPORARILY SAVE IT IN V42   GET THE PERMANENT STACK POINTER FROM THE STACK  AND TEMPORARILY SAVE IT IN V44   TASK REGISTER   AND TIMER INPUT OF 63 5 MICROSECONDS  PROGRAM INITIALIZATION REGISTER 1   RESET THE STACK POINTER   GET BACK THE RETURN ADDRESS   AND PUT IT ONTO THE STACK   RESTORE ACCD   TURN ON IRQ  FIRQ      SELECT TASK REGISTER 1 AS THE ACTIVE TASK REGISTER    EXIT WITH THE STACK POINTER SET TO A TEMPORARY LOCATION       DISABLE INTERRUPTS   TEMPORARILY SAVE ACCD IN V40   GET THE RETURN ADDRESS   AND TEMPORARILY SAVE IT IN V42   TEMPORARILY SAVE THE STACK POINTER IN V44   TASK REGISTER 1 AND TIMER INPUT AT 63 5 MICROSECONDS  SETUP INITIALIZATION REGISTER 1   PUT THE STACK JUST BELOW THE START OF ENHANCED BASIC  GET THE OLD STACK PO
168. GISTERS  PULS X RESTORE THE MMU IMAGE PONTER   LDB    BLOCK7 1 GET BLOCK 7 1  BASIC S NORMAL LOGICAL BLOCK 1   STB 501    AND SAVE IT IN THE MMU IMAGE    PULS  A B X  Y  PC    LE  CB     PSHS Y X B A    LEAX  IM MMU PC POINT TO THE MMU RAM IMAGE   PSHS X TEMP SAVE   LDB X ZBLOCK6 4 GET BLOCK 6 4   STB 14 X AND SAVE IT IN LOGICAL BLOCK 6 OF TASK REGISTER 1   BSR LEQF1 COPY THE RAM IMAGE OF THE MMU REGISTERS INTO THE MMU REGISTERS  PULS X RESTORE MMU IMAGE POINTER   LDB  BLOCK6 5 GET THE  NORMAL  BLOCK FOR TASK REGISTER 1  LOGICAL BLOCK 6  STB 14 X PUT IT BACK INTO TASK REGISTER 1 IMAGE    PULS  A B X  Y  PC      MASTER IMAGES USED TO PROGRAM THE CUSTOM CHIP S MMU REGISTERS    TASK REGISTER 0  IM MMU FCB BLOCK7   BLOCK7 1 BLOCK7 2 DEFAULT VALUES  BLOCK7 3 BLOCK7 4 BLOCK7 5  BLOCK7 6 BLOCK7 7    TASK REGISTER 1  LEQE9 FCB BLOCK7   BLOCK6 8 BLOCK6 1 DEFAULT VALUES  BLOCK6 2 BLOCK6 3 BLOCK7 5  BLOCK6 5 BLOCK7 7      COPY 16 BYTES INTO THE MMU REGISTERS    ENTER WITH X POINTING TO THE 16 BYTES    LEQF1 LDY  MMUREG POINT TO THE MMU REGISTERS  LDB  16 16 MMU REGISTERS   LEQF7 LDA X GET A BYTE  STA      AND PUT IT INTO THE MMU REGISTER  DECB DECREMENT THE BYTE COUNT  BNE LEQF7 KEEP GOING UNTIL ALL REGISTERS MOVED  RTS       SELECT TASK REGISTER 0 AS THE ACTIVE TASK REGISTER    ENTER WITH THE STACK POINTING TO A TEMPORARY LOCATION  THE PERMANENT    STACK POINTER WAS SAVED ON THIS TEMPORARY STACK WHEN TASK REGISTER 1    B7    SUPER EXTENDED BASIC UNRAVELLED II    0673  0674  0675  0676 
169. H W RATIO WILL ONLY MODIFY THE VERTICAL COORD    TFR Y D    B20    SET TO ALTERNATE PIXEL   SEE IF TOP HALF OF BYTE   BRANCH IF SAME BYTE   MOVE POINTER TO NEXT SCREEN ADDRESS    GET NUMBER OF BYTES PER HORIZONTAL GRAPHICS ROW  ADD A ROW TO CURRENT ADDRESS  MOVE DOWN ONE ROW     CHECK HI RES GRAPHICS MODE   BRANCH IF NOT HI RES GRAPHICS   RAM HOOK   CHECK FOR   SIGN  HCIRCLE  IS LEGAL SYNTAX    BRANCH IF NOT   GET THE NEXT CHARACTER FROM BASIC S INPUT LINE   GET MAX HORIZONTAL  amp  VERTICAL COORD VALUES AND PUT THEM IN VD3  amp  VD5  GET HORIZONTAL  amp  VERTICAL CENTER COORDS AND PUT THEM IN VBD AND VBF  NORMALIZE START COORDS FOR PROPER HI RES GRAPHICS MODE  GET HORIZONTAL COORD   SAVE IT   GET VERTICAL COORD   SAVE IT   DO A SYNTAX CHECK FOR A COMMA   EVALUATE EXPRESSION  RETURN VALUE IN X   POINT U TO TEMP DATA STORAGE   SAVE RADIUS   NOW A JSR TO AN RTS  WAS A CALL TO A NORMALIZATION ROUTINE  PSET FLAG   SAVE PSET PRESET FLAG   GO EVALUATE COLOR EXPRESSION AND SAVE VALUE   DEFAULT HEIGHT WIDTH RATIO   GET BASIC S CURRENT INPUT CHARACTER   BRANCH IF NONE   DO A SYNTAX CHECK FOR A COMMA   EVALUATE A NUMERIC EXPRESSION   GET FPA   EXPONENT   ADD 8 TO IT  EFFECTIVELY MULTIPLIES BY 256    SAVE NEW VALUE   EVALUATE EXPRESSION  RETURN VALUE IN X   GET CURRENT HI RES GRAPHICS MODE   SEE WHICH MODE IT IS   BRANCH IF HSCREEN 4   PREPARE TO DOUBLE THE HEIGHT WIDTH RATIO FOR MODES 0 2  DOUBLE H W RATIO TO COMPENSATE FOR HORIZONTAL PIXEL SIZE  SAVE H W RATIO   CODE FOR PSET   SET PS
170. IC 1 1     HRESSCRN  D X  HORBEG    D X  HORBEG 1    03  HPIX2MASK  A U  B U PC    U B  HORBYT  VERBEG 1    HHRESSCRN  D X  HORBEG    D X  HORBEG 1   901                     A U  B U PC    HRMODE  LEGEF  LB26A  LE7AA  18267  SELTASK1  HCALPOS  A B   X    LE87B    LE875  LB4F3  5        5      HRMODE  LE6EF  RAMLINK  gu  LE899    AC  LE899        LB26F  LE9E1  HOREND  HORDEF  VEREND  VERDEF  SYNCOMMA    BE  LE8B4    BD  LB277    01  SKP1LD    B  GETNCH  LEA D  B  SETFLG  LE731  GETCCH  LE94E  SYNCOMMA    B   LB26F  LE8EB  1  906  LE931  HORBEG      HOREND  HORBEG  LE931  X  HORBEG  VEREND  VERBEG  LE906    B17    ORIGIN SPECTRAL ASSOC  REVISED 12 26 1999 WALTER K ZYDHEK    NOW ACCD CONTAINS THE ROW OFFSET IN BYTES FROM THE TOP OF SCREEN  ADD THE ROW OFFSET TO THE START OF THE SCREEN   X CONTAINS THE ADDRESS OF THE START OF THE ROW CONTAINING A PIXEL  GET THE HORIZONTAL COORDINATE      DIVIDE HORIZONTAL COORDINATE BY FOUR   THERE ARE 4 PIXELS PER BYTE    ACCD CONTAINS THE COLUMN OFFSET TO THE PIXEL IN BYTES   ADD THE COLUMN OFFSET   X POINTS TO THE BYTE CONTAINING THE PIXEL  GET THE LEAST SIGNIFICANT BYTE OF THE HORIZONTAL COORDINATE   KEEP BITS 0 1 WHICH ARE THE PIXEL POSITION IN THE BYTE   POINT TO THE TABLE OF FOUR COLOR PIXEL MASKS   GET THE CORRECT PIXEL MASK   RESTORE THE REGISTERS    SAVE REGISTERS   GET THE NUMBER OF BYTES ROW   GET THE VERTICAL COORDINATE   NOW ACCD CONTAINS THE ROW OFFSET IN BYTES FROM THE TOP OF SCREEN  ADD THE ROW OFFSET TO THE START OF THE SCREEN  
171. ING   SAVE THE STRING IN STRING SPACE   CALCULATE THE LENGTH AND ADDRESS OF THE STRING  SAVE THE LENGTH OF THE STRING   POINT TO THE HPRINT BUFFER   DECREMENT THE CHARACTER COUNT   BRANCH IF ALL CHARACTERS PRINTED   GET A CHARACTER FROM THE STRING   SAVE IT IN THE HPRINT BUFFER   KEEP GOING UNTIL DONE   GET THE HI RES GRAPHICS MODE   40 CHARACTERS MAX IN THE 320 PIXEL WIDE MODE  CHECK THE HSCREEN MODE   BRANCH IF 40 COLUMN RESOLUTION   80 CHARACTERS MAX IN THE 640 PIXEL WIDE MODE  CLEAR THE MOST SIGNIFICANT BYTE OF ACCD   SUBTRACT THE HORIZONTAL PRINT POSITION   EXIT IF HORIZONTAL PRINT POSITION    LINE LENGTH  IS THE PRINT CHARACTER COUNT    LINE LENGTH   BRANCH IF NOT   FORCE THE PRINT CHARACTER COUNT TO EQUAL THE LINE LENGTH  EXIT IF LINE LENGTH       GET THE HIGHEST POSSIBLE ROW NUMBER   AND COMPARE IT TO THE PRINT ROW   BRANCH IF PRINTING ON A LEGAL ROW NUMBER   PRINT ON BOTTOM ROW  HIGHEST NUMBER  IF ILLEGAL ROW SPECIFIED  ADJUST ROW AND COLUMN NUMBERS FOR PRINTING ON HI RES SCREEN  POINT X TO THE SCREEN ADDRESS  ACCA   PIXEL MASK  POINT TO THE HPRINT BUFFER   GET THE NUMBER OF CHARACTERS IN THE PRINT BUFFER  GET A CHARACTER FROM THE PRINT BUFFER   MASK OFF THE GRAPHICS BIT  BIT 7    SUBTRACT OUT THE CONTROL CODES   BRANCH IF IT WAS NOT A CONTROL CODE   FORCE A CONTROL CODE TO PRINT A BLANK   PUT THE  MASSAGED  CHARACTER BACK INTO THE BUFFER  BUMP CHARACTER DOWN ONE   LOOP UNTIL ALL CHARACTERS DONE   GET THE HI RES GRAPHICS MODE   CONVERT 1 4 TO 0 3   MULTIPLY BY TWO   
172. INTER BACK   AND STUFF IT ONTO THE STACK   GET THE RETURN ADDRESS BACK   AND STUFF IT ONTO THE STACK 700   GET BACK ACCD    CHECK THE TOKEN FLAG   BRANCH IF IT IS A FUNCTION TOKEN   GET THE TOKEN COUNTER   COMPARE TO THE FIRST ENHANCED BASIC TOKEN   BRANCH IF BEFORE FIRST TOKEN   POINT U TO EXTENDED COLOR BASIC S INTERPRETATION TABLE  RE ENTER THE MAIN STREAM CODE   FORCE THE TOKEN COUNTER TO THE FIRST ENHANCED BASIC TOKEN NUMBER  POINT TO ENHANCED BASIC S COMMAND INTERPRETATION TABLE  SAVE THE NEW TOKEN COUNTER   RE ENTER THE MAIN STREAM CODE   GET THE TOKEN COUNTER   COMPARE TO THE FIRST ENHANCED FUNCTION TOKEN NUMBER  BRANCH IF LESS THAN ENHANCED TOKEN NUMBER   RE ENTER THE MAIN STREAM CODE   FORCE COUNTER TO FIRST ENHANCED FUNCTION   POINT TO THE ENHANCED FUNCTION INTERPRETATION TABLE    23 BASIC 2 0 COMMANDS   BASIC 2 0 S COMMAND DICTIONARY   COMMAND PROCESSING ROUTINE ENTRY POINT   5 BASIC 2 0 FUNCTIONS   FUNCTION DICTIONARY TABLE   FUNCTION PROCESSING ROUTINE ENTRY POINT   DUMMY SPACE USED TO SIMULATE AN EMPTY COMMAND INTERP  VECTOR TABLE    SKIP TO THE NEXT COMMAND INTERPRETATION TABLE   IS THIS A VALID TABLE    YES   RE ENTER THE MAIN STREAM CODE   UNNECESSARY INSTRUCTION  NEXT ONE SHOULD JUST BE LDA  1 X  GET THE TOKEN FROM BASIC S INPUT LINE   STRIP OFF THE  80 COMMAND TOKEN BIAS   FIRST LEGAL BASIC 2 0 COMMAND TOKEN NUMBER   BRANCH IF LEGAL TOKEN   ADJUST BASIC 2 0 TOKENS TO START AT 0   POINT TO ENHANCED BASIC S COMMAND INTERPRETATION TABLE    SUBTRACT OUT THE FI
173. K    Vertical Offset Register  LSB     BIT  7  Y0 Y7 Vertical offset low order byte    Horizontal Offset Register    BIT7 HVEN Horizontal Virtual Enable    BIT  6 HOFF Horizontal Offset    Memory Management Unit Task Register      Memory Management Unit Task Register 1    Palette Registers    D3    SUPER EXTENDED BASIC UNRAVELLED II APPENDIX E ORIGIN SPECTRAL ASSOC  COLOR COMPUTER 3 COLORS REVISED 12 26 1999 WALTER K ZYDHEK    Listed below are the 64 different colors available on the Color Computer 3   In order to use the colors  first decide which color you wish to display and find  the color closest to your desired color in the table below  Then you must know  whether the color will be viewed on an RGB monitor  RGB  or a composite monitor  or a television set  CMP   Get the color number from the appropriate monitor  column and store that number into a palette register or the border color register   The names assigned to these colors are based upon the names given to the RGB  colors  Since the methods in which the RGB and composite colors are generated  are not the same  as explained in Chapter Five  the name of the color may not  agree whith what you personally see the color to be  This table is presented  in order to provide a universal conversion between the RGB and composite colors   All you need to do is have a short program such as the one shown in Figure 16  to allow easy conversion of colors in your program based upon the type of  monitor being used to view the progr
174. K ON THE SCREEN   GET THE CHARACTER MASK BACK    AND  IT WITH THE PIXEL COLOR BYTE    COLOR  THE DATA    OR  IT WITH THE SCREEN DATA   FILL THE  HOLE  CREATED ABOVE  WITH THE  COLORED  CHARACTER DATA AND PUT THE DATA ON THE SCREEN    SAVE THE PRINT BUFFER POINTER  POINT TO THE TABLE OF 4 COLOR PIXEL MASKS  COPY CHARACTER DATA TO ACCB    SHIFT THE HIGH ORDER NIBBLE TO THE LOW ORDER NIBBLE  GET THE PIXEL MASK FOR THE HIGH NIBBLE   DISPLAY THE HIGH ORDER NIBBLE DATA ON THE SCREEN  MASK OFF THE HIGH ORDER NIBBLE   GET THE PIXEL MASK FOR THE LOW NIBBLE   DISPLAY THE LOW ORDER NIBBLE DATA ON THE SCREEN  RESTORE THE PRINT BUFFER POINTER    4 COLOR PIXEL MASKS    SAVE THE PRINT BUFFER POINTER AND THE CHARACTER DATA  POINT TO THE TABLE OF 16 COLOR MASKS    SHIFT THE HIGH ORDER PIXEL TO BITS 0 3   MULTIPLY BY 2  THERE ARE 2 BYTES PER TABLE ENTRY  GET THE FIRST FOUR PIXEL MASKS FROM THE TABLE  DISPLAY THE FIRST TWO PIXELS   PUT THE NEXT TWO PIXELS  DATA INTO ACCA   DISPLAY THE NEXT TWO PIXELS   GET THE CHARACTER DATA BACK   MASK OFF THE HIGH NIBBLE   MULTIPLY BY 2  THERE ARE 2 BYTES PER TABLE ENTRY  GET THE LAST FOUR PIXEL MASKS FROM THE TABLE  DISPLAY THE NEXT TWO PIXELS   PUT THE NEXT TWO PIXELS  DATA INTO ACCA   DISPLAY THE LAST TWO PIXELS   RESTORE THE PRINT BUFFER POINTER   WASTED  THIS AND ABOVE INSTRUCTION SHOULD BE PULS Y PC      CONVERT THE PRINT POSITION FROM CHARACTER ROWS AND COLUMNS TO PIXEL ROWS    AND COLUMNS  EACH CHARACTER IS 8 PIXELS WIDE AND 8 PIXELS DEEP    LF 8C    
175. KEN   SYNTAX ERROR IF NOT GO   GET THE NEXT CHARACTER FROM BASIC S INPUT LINE   TO  TOKEN   SYNTAX ERROR IF NOT GOTO    REMOVE ONE RETURN ADDRESS FROM THE STACK   SYNTAX  ERROR    CHECK FOR THE  GO  AND  TO  TOKENS   GET THE NEXT CHARACTER FROM BASIC S INPUT LINE   STRIP THE  GOTO  LINE NUMBER FROM THE BASIC INPUT LINE  GET THE  GOTO  LINE NUMBER   SAVE IT   GET THE CURRENT LINE NUMBER   AND SAVE IT AS THE SOURCE LINE NUMBER    ORIGIN SPECTRAL ASSOC    REVISED 12 26 1999 WALTER K ZYDHEK    SUPER EXTENDED BASIC UNRAVELLED II    0961  0962  0963  0964  0965  0966  0967  0968  0969  0970  0971  0972  0973  0974  0975  0976  0977  0978  0979  0980  0981  0982  0983  0984  0985  0986  0987  0988  0989  0990  0991  0992  0993  0994  0995  0996  0997  0998  0999  1000  1001  1002  1003  1004  1005  1006  1007  1008  1009  1010  1011  1012  1013  1014  1015  1016  1017  1018  1019  1020  1021  1022  1023  1024  1025  1026  1027  1028  1029  1030  1031  1032  1033  1034  1035  1036  1037  1038  1039  1040  1041  1042  1043  1044  1045  1046  1047  1048  1049  1050  1051  1052  1053  1054  1055  1056          6  E3E8  E3EA  E3ED  E3EF  E3F2  E3F4  E3F7    E3F8  E3FA  E3FC  E3FE  E402  E403  E405  E407  E409  E40B    E40C  E410    E413  E415  E417  E419  E41B  E41D  E41F  E421  E424  E426    E429  E42B  E42D  E430  E432  E435  E437  E438  E43A  E43D  E43F  E441  E443  E446  E449  E44B    44      450    453    456    458    45      450  E45F  E462  E464  E466  E469  E46D    E470  E473  E
176. LDB     H PCOUNT  LEFA3 LDA  Y  ANDA   7F  SUBA 4920  BPL     LEFAD  LDA 4400  LEFAD STA  Y   DECB  BGT     LEFA3  LDA     HRMODE  DECA  ALSA  LDY  LF002  LDY A Y  STY NDl    THIS SECTION  LDA     4 08  STA VD3  LDY     4H PBUF  LDU     4LF09D  LDB     H FCOLOR  JSR     PIXELFIL  STB     ALLCOL  JSR SELTASK1  LDA     H PCOUNT  LEFD9     PSHS           LEFDB LDB      Y   CLRA    B27    REVISED 12 26 1999 WALTER K ZYDHEK    PUT IT BACK ON THE SCREEN    POINT U TO THE PROPER BUFFER LOCATION    GET A BYTE FROM THE SCREEN  SHOULD BE FROM THE BUFFER  COMPLEMENT THE BYTE  PUT IT BACK ON THE SCREEN    POINT Y TO THE START OF THE BUFFER SPACE   GET THE FIRST BYTE   ARE ANY BUFFERS ACTIVE    YES  SEARCH FOR THE CORRECT BUFFER    FC  ERROR IF NO BUFFERS ACTIVE   SKIP TO NEXT BUFFER    FC  ERROR IF THERE ARE NO MORE ACTIVE BUFFERS  COMPARE THE DESIRED BUFFER TO THE CURRENT BUFFER NUMBER  NO  MATCH  CHECK THE NEXT BUFFER   GET THE SIZE OF THE SELECTED BUFFER   SKIP TO ONE BYTE BEFORE THE START BUFFER DATA  SAVE THE START OF THE BUFFER DATA   MOVE TO THE ACTUAL START OF DATA   ADD IN THE SIZE OF THE DATA   SAVE THE ADDRESS OF THE END OF THE DATA    CHECK THE HI RES GRAPHICS MODE    HR  ERROR IF NOT HI RES GRAPHICS MODE   RAM HOOK   SYNTAX CHECK FOR       EVALUATE HORIZONTAL AND VERTICAL COORDINATE  SYNTAX CHECK FOR       SYNTAX CECK FOR COMMA   EVALUATE EXPRESSION   CHECK THE TYPE OF VARIABLE EVALUATED   BRANCH IF NOT NUMERIC   REALLY SHOULD BE BMI  CONVERT FLOATING POINT NUMBER INTO A STR
177. LDD   ALSB  ALSB  ROLA  ALSB  ROLA  STD    HORBEG    HORBEG    B28    GET THE PRINT COLUMN POSITION    SHIFT ACCD LEFT THREE TIMES  MULTIPLY COLUMN POSITION BY EIGHT  SAVE NEW COLUMN POSITION IN TERMS OF PIXELS  8 PIXELS CHARACTER     SUPER EXTENDED BASIC UNRAVELLED II    2689  2690  2691  2692  2693  2694  2695  2696  2697  2698  2699  2700  2701  2702  2703  2704  2705  2706  2707  2708  2709  2710  2711  2712  2713  2714  2715  2716  2717  2718  2719  2720  2721  2722  2723  2724  2725  2726  2727  2728  2729  2730  2731  2732  2733  2734  2735  2736  2737  2738  2739  2740  2741  2742  2743  2744  2745  2746  2747  2748  2749  2750  2751  2752  2753  2754  2755  2756  2757  2758  2759  2760  2761  2762  2763  2764  2765  2766  2767  2768  2769  2770  2771  2772  2773  2774  2775  2776  2777  2778  2779  2780  2781  2782  2783  2784    F095  F097  F098  F099  FO9A  F09C    F09D                  5  FOAB  FOAD        3        5            FOBD  F0C3  F0C5           FQCD  F0D3  F0D5  FODB  F  DD  FOES  FOES  FOEB  FOED  FOF3  FOFS  FOFB  FOFD  F103  F105  F10B  F10D  F113  F115  F11B  F11D  F123  F125  F12B  F12D  F133  F135  F13B  F13D  F143  F145  F14B  F14D  F153  F155  F15B  F15D  F163  F165  F16B  F16D  F173  F175  F17B  F17D  F183  F185  F18B  F18D  F193  F195  F19B    F19D  F1A3  F1A5  F1AB  F1AD  F1B3  F1B5  F1BB  F1BD  F1C3  F1C5  F1CB  F1CD  F1D3  F1D5  F1DB  F1DD  F1E3  FLES  F1EB  F1ED    96  48  48  48  97  39    0g  00  10  10  28  00  28  28  10  10  60  0    2
178. LEMENTED ASCII  T Harris     T Earles CR      FCB      AB  D1  B7  9E  8D  8D   FCB      96  8C  DF  D9   DF    AB   FCB      D1  8A  9E  8D  93  9A   FCB      8C  F2  FF       LDA DCNVEC  CMPA   D6  BNE LC334    LDX             28  LEAY  LC355 PC    B5    LOOK FOR THE MS BYTE OF THE ADDRESS OF DSKCON    IF IT IS D6  THEN WE HAVE DISK BASIC 1 8  BRANCH IF DISK BASIC 1 1    POINT X TO DISK BASIC 1 0 PATCH ADDRESS     0  6     POINT Y TO THE PATCH DATA    ORIGIN SPECTRAL ASSOC  REVISED 12 26 1999 WALTER K ZYDHEK    SUPER EXTENDED BASIC UNRAVELLED II    0481  0482  0483  0484  0485  0486  0487  0488  0489  0490  0491  0492  0493  0494  0495  0496  0497  0498  0499  0500  0501  0502  0503  0504  0505  0506  0507  0508  0509  0510  0511  0512  0513  0514  0515  0516  0517  0518  0519  0520  0521  0522  0523  0524  0525  0526  0527  0528  0529  0530  0531  0532  0533  0534  0535  0536  0537  0538  0539  0540  0541  0542  0543  0544  0545  0546  0547  0548  0549  0550  0551  0552  0553  0554  0555  0556  0557  0558  0559  0560  0561  0562  0563  0564  0565  0566  0567  0568  0569  0570  0571  0572  0573  0574  0575  0576    C330  C332  C334  C337  C339  C33B  C33D  C33E  C340  C343  C347  C349  C34B  C34D  C34E  C358    C351  C352  C355  C356    C359  C35A  C35D  C368  C363  C366  C369    C36C     405    0  05    E000  E002  E004  E006  E008            E00C            E619  E913  E915  E017    E019  E01B            E622  E624  E626  E629      2        20  E638    E032  E933  E939   
179. LF36D  LF375  LF37D  LF385  LF38D  LF395  LF3B8  LF3BD  LF3C3    C3    F1DD    1  5  F1ED  F1F5  F1FD  F265    20    F215  F21D  F225  F22D  F235  F23D  F245  F24D  F255  F25D  F265  F26D  F275  F27D  F285  F28D  F295  F29D  F2A5  F2AD  F2B5  F2BD  F2C5  F2CD  F2D5  F2DD  F2E5  F2ED  F2F5  F2FD  F365  F30D  F315  F31D  F325  F32D  F335  F33D  F345  F34D  F355  F35D  F365  F36D  F375  F37D  F385  F38D  F395  F3B8  F3BD  F3C3    LF3C5  LF3CF  LF3E6  LF3EE  LF417  LF445  LF451  LF45C  LF467  LF46D  LF46F  LF473  LF47D  LF485  LF487  LF48C  LF492  LF496  LF49A  LF4A1  LF4B2  LF4BF  LF4D0  LF4D1  LF4D4  LF4E5  LF4F1  LF4FC  LF507  LF510  LF51F  LF527  LF53B  LF545  LF54C  LF570  LF575  LF578  LF583  LF584  LF590  LF591  LF593  LF5A7  LF5B6  LF5C1  LF5DA  LF5DD  LF5F2  LF5FA  LF5FD  LF608  LF610  LF611  LF61F  LF64F  LF66D  LF68C  LF69B    F3C5  F3CF  F3E6  F3EE  F417  F445  F451  F45C  F467  F46D  F46F  F473  F47D  F485  F487  F48C  F492  F496  F49A  F4A1  F4B2  F4BF  FADO  F4D1    4  4    4      FAF1            F507  F518            F527  F53B  F545  F54C    570  F575  F578  F583  F584    590  F591  F593  F5A7  F5B6  F5C1  F5DA  F5DD            F5FA  F5FD    608    610  F611  F61F  F64F  F66D  F68C  F69B    ORIGIN SPECTRAL ASSOC  REVISED 12 26 1999 WALTER K ZYDHEK    LF6DC  LF6EG  LF6E7  LF719  LF738  LF74D  LF75E  LF761  LF766  LF772  LF778  LF787  LF79F  LF7A4  LF7A8  LF7C4  LF7CC  LF7D7  LF7DE  LF7E2  LF802  LF807  LF827  LF82E  LF854  LF869  LF86A  LF86E  LF87B  LF88A  LF8AB 
180. LOR ON THE STACK   GET THE CURRENT INPUT CHARACTER   SYNTAX CHECK FOR A COMMA   EVALUATE EXPRESSION  RETURN VALUE IN ACCB  BACKGROUND COLOR   8 MAXIMUM BACKGROUND COLORS   ILLEGAL FUNCTION CALL ERROR IF    8          IN THE CHARACTER COLOR   REMOVE TEMPORARY CHARACTER FROM STACK  ORB  S  ABOVE IS MORE EFFICIENT  MASK OFF BITS 6 7  THIS INSTRUCTION IS UNNECESSARY   SAVE THE CHARACTER AND BACKGROUND COLORS ON THE STACK   GET THE CURRENT INPUT CHARACTER   BRANCH IF END OF LINE   SYNTAX CHECK FOR A COMMA   CHECK FOR THE BLINK ATTRIBUTE FLAG   BRANCH IF NOR BLINK ATTRIBUTE FLAG    SET BIT 7 WHICH IS THE BLINK ATTRIBUTE BIT    GET A CHARACTER FROM BASIC S INPUT LINE  KEEP CHECKING FOR ATTRIBUTE FLAGS   CHECK FOR THE UNDERLINE ATTRIBUTE  ILLEGAL FUNCION CALL ERROR    SET BIT 6 WHICH IS THE UNDERLINE ATTRIBUTE BIT    GET A CHARACTER FROM BASIC S INPUT LINE  KEEP CHECKING FOR ATTRIBUTE FLAGS   GET THE NEW ATTRIBUTE BYTE FROM THE STACK  AND SAVE IT AS THE CURSOR ATTRIBUTES    UNUSED BYTES   FE     SECONDARY VECTORS AREA   FF00 INPUT OUTPUT AREA    SUPER EXTENDED BASIC UNRAVELLED II    ALINK12  ALINK14  ALINK15  ALINK16  ALINK17  ALINK18  ALINK19  ALINK2  ALINK29  ALINK21  ALINK22  ALINK23  ALINK24  ALINK25  ALINK26  ALINK27  ALINK28  ALINK29  ALINK3  ALINK4  ALINK5  ALINK6A  ALINK6B  ALLCOL  ANGLE  ATTR  AUTHORMS  AUTHPIC      520            5      BEGMOVE  BINVAL  BLKCNT  BRK  BUTTON  CALTABLE  CHARAD  CHGFLG  CIRCDATA  CLRHIRES  CMP  C0L32        16    0180  COMDIC29  COMDIS29  CURLI
181. LUMNS   MAXIMUM NUMBER OF ROWS   SAVE THE NUMBER OF COLUMNS AND ROWS    CLR     VD3  CLR         LF5C1 SUBA   0   STA     VD7  LDD     VD3  BSR     LF5FD  ADDB VD7  ADCA 3508  STD     VD3  LDA     HRMODE  CMPA 4902  BGT     LF5DA  LDD     4320 1  BRA     LF5DD  LF5DA LDD  640 1  LF5DD CMPD VD3  LBLT ILLFUNC  LDD     VD3  TST VD8  BEQ           JSR 1  591  JSR LF608         LF5C1  LF5F2 INC D8  LDX         LEAX   61 X  STX     VD9  LF5FA LDD D3  RTS    MULTIPLY ACCD BY TEN  LF5FD         ROLA  PSHS        ALSB  ROLA  ALSB  ROLA  ADD     S    RTS    CLEAR THE CARRY FLAG IF ACCA CONTAINS A NUMERIC ASCII VALUE   30  39   1  6068                 BCS 1  610  SUBA   9  1  SUBA     9  1   LF618     5    INTERPRET THE CURRENT COMMAND STRING AS IF IT WERE A BASIC VARIABLE  LF611 LDX VD9  PSHS X  JSR 1  591  JSR          LBCS  ILLFUNC  LF61F JSR  LF591  CMPA       BNE LF61F  PULS X  LDU     CHARAD  PSHS U  STX     CHARAD  JSR 18284  PULS X  STX     CHARAD  RTS    WIDTH  WIDTH CLR HRMODE  LBRN RAMLINK  CMPA   00  BEQ     LF64F  JSR EVALEXPB  CMPB  32  BEQ     C0L32  CMPB  40  BEQ   0140  CMPB  80  BEQ 0180  LF64F JMP  ILLFUNC    32 COLUMNS  COL32           STA     HRWIDTH  JSR 14928  LBSR 5              RTS     40 COLUMNS  COL4   10   4801  STA     HRWIDTH  LBSR LF772  LDA 440  LDB      ROWMAX  STD     H COLUMN  LDD   HRSCREEN 40 ROWMAX 2    B34    END OF THE HI RES TEXT SCREEN    SUPER EXTENDED BASIC UNRAVELLED II    3265  3266  3267  3268  3269  3278  3271  3272  3273  3274  3275  3276
182. M COMMAND LINE   CHECK FOR COMMA   ILLEGAL FUCNTION CALL ERROR IF NO COMMA   EVALUATE THE VERTICAL DIFFERENCE   SAVE VERTICAL DIFFERENCE IN X   GET HORIZONTAL DIFFERENCE IN U   GET FIRST COMMAND CHARACTER   CHECK FOR PLUS   TREAT VALUES IN X AND U AS DIFFERENCES AND MOVE POINTER   CHECK FOR MINUS   IF NOT     OR      MOVE THE POINTER TO THE COORDINATES IN U AND ACCD  PUT HORIZONTAL DIFFERENCE IN ACCD  X CONTAINS THE VERTICAL DIFFERENCE  GOMOVE THE DRAW POSITION   GET A CHAR FROM COMMAND LINE   CHECK FOR LEADING    RELATIVE MOTION    BRANCH IF RELATIVE   DO THE SAME FOR THE MINUS SIGN   BRANCH IF RELATIVE   MOVE COMMAND STRING BACK ONE IF NOT RELATIVE MOTION   IF          0  THEN      IF           lt  gt      THEN       SAVE ADD SUB FLAG     ADD   lt  gt       SUBTRACT   EVALUATE DECIMAL NUMBER IN COMMAND STRING   RETURN VALUE IN ACCD  CHECK THE ADD SUBTRACT FLAG AND CLEAN UP THE STACK   BRANCH IF ADD      THIS IS A BUG  SHOULD BE JSR NEGACCD INSTEAD OF THE NEXT TWO INSTRUCTIONS    LF598    NEGB  SBCA  RTS      00      GET NEXT COMMAND   RETURN VALUE IN ACCA    LF591  LF593    LF5A7    LF5B6    PSHS  TST  LBEQ  LDX  LDA  STX  DEC  CMPA  BEQ  PULS    CMPA  BNE  PSHS  BSR  JSR  STD  PULS  JSR  LBCS    X   VD8  ILLFUNC      9   X   VD9   VD8  SPACE  LF593  X PC    ro  LF5B6  U Y  LF611  LB3E9  V03  Y U PC  LF608  ILLFUNC    B33    SAVE X REGISTER   CHECK COMMAND COUNTER   ILLEGAL FUNCTION CALL ERROR IF NO COMMAND DATA LEFT  GET COMMAND ADDRESS   GET COMMAND   SAVE NEW COMMAND ADD
183. MMUREG END OF THE VIDEO MODE REGISTERS   BCS LE08B NO   KEEP STUFFING REGISTERS    PULS A X Y PC      PROGRAM THE MMU REGISTERS  ENTER WITH X POINTING TO THE DATA TO PLACE INTO THE MMU REGISTERS  SETMMU PSHS Y X B A  LEAX   IM MMU  PC POINT TO THE RAM IMAGE OF THE MMU REGISTERS  BSR LEGF1 MOVE 16 BYTES INTO THE MMU REGISTERS  PULS A B X Y PC      PLACE A BLOCK INTO LOGICAL ADDRESS SPACE BLOCK 0     ENTER WITH ACCB CONTAINING THE BLOCK NUMBER TO BE PLACED INTO THE LOGICAL ADDRESS SPACE    EXIT WITH BLOCK 7 0 REPLACED IN BLOCK 0 OF THE LOGICAL ADDRESS SPACE RAM IMAGE   SELBLOK   PSHS     Y X B A    ORIGIN SPECTRAL ASSOC  REVISED 12 26 1999 WALTER K ZYDHEK    LEAX  IM MMU PC POINT TO THE RAM IMAGE OF THE MMU REGISTERS   PSHS X TEMP SAVE   STB  X SAVE THE NEW BLOCK NUMBER IN LOGICAL ADDRESS SPACE BLOCK     TR     BSR LEQF1 COPY THE RAM IMAGE OF THE MMU REGISTERS INTO THE MMU REGISTERS  LDB             7 0 GET BLOCK 7 8   PULS X RESTORE THE MMU IMAGE POINTER   STB   X RESTORE BLOCK 7 0 TO BLOCK    OF MMU RAM IMAGE    PULS A B X Y PC      PLACE THE HI RES TEXT SCREEN INTO LOGICAL ADDRESS SPACE BLOCK 1    EXIT WITH BLOCK 7 1 REPLACED INTO BLOCK 1 OF THE LOGICAL ADDRESS SPACE RAM IMAGE  SELTEXT PSHS Y X B A    LEAX IM MMU PC POINT TO THE RAM IMAGE OF THE MMU REGISTERS   PSHS X TEMP SAVE   LDB     10    6 6 GET THE BLOCK WHICH CONTAINS THE HI RES TEXT SCREEN   STB 501    AND SAVE IT IN THE MMU IMAGE OF TASK REGISTER 0   BSR LEQF1 COPY THE RAM IMAGE OF THE MMU REGISTERS INTO THE MMU RE
184. MU IMAGES   COMMAND INTERPRETATION TABLE   COMMANDS DICTIONARY   COMMANDS DISPATCH TABLE   FUNCTIONS DICTIONARY   FUNCTIONS DISPATCH TABLE   DISK BASIC 2 8 COPYRIGHT MESSAGE           MICROWARE SYSTEMS CORP   MESSAGE   DISK BASIC 2 1 COPYRIGHT MESSAGE   SUPER EXTENDED BASIC ERROR CODES   TABLE OF  OFFICIAL  COMPOSITE COLORS   TABLE OF  OFFICIAL  RGB COLORS   PALETTE REGISTERS  RAM IMAGE   TABLE OF HOW MANY BYTES PER HORIZONTAL ROW IN THE   HIGH RESOLUTION GRAPHICS MODES   TABLE OF SINGLE PIXEL MASKS FOR THE HI RES GRAPHICS MODES  TABLE OF MULTIPLIERS TO SPREAD A SINGLE PIXEL MASK  THROUGH AN ENTIRE BYTE   TABLE OF 1 2 AND 4 BIT SHIFTED PIXEL MASKS   TABLE OF PIXEL MOVE ADDRESSES   TABLE OF SINES AND COSINES FOR THE HCIRCLE COMMAND  LOOKUP TABLE FOR PSET  PRESET  AND  OR AND NOT ROUTINES  FOR THE HPUT COMMAND   TABLE OF ADDRESSES FOR THE HI RES PRINT DRIVERS   TABLE OF ALL POSSIBLE 2 BIT PIXEL MASKS   TABLE OF ALL POSSIBLE DOUBLE BYTE 4 BIT PIXEL MASKS  HIGH RESOLUTION SOFTWARE CHARACTER GERNERATOR  ROM                       SYSTEMS CORP   MESSAGE   AUTHORS  NAMES   THIS AREA IS ALL ZEROS IN THE ROM  AFTER  INITIALIZATION THE AUTHORS  NAMES WILL BE FOUND HERE  IN RAM   UNTIL YOU EXECUTE A CLS 100 COMMAND  AFTER WHICH TIME YOU WILL  FIND NOPs IN THIS AREA     F1    SUPER EXTENDED BASIC UNRAVELLED II APPENDIX G ORIGIN SPECTRAL ASSOC    SUPER EXTENDED BASIC ROM ROUTINES REVISED 12 26 1999 WALTER K ZYDHEK    At the back of the Color Computer 3 Extended Basic manual  you will find 
185. MUM PERMISSABLE  ILLEGAL FUNCTION CALL IF SUBCOMMAND TOO BIG   THIS INSTRUCTION IS USELESS   CHECK THE COMMAND COUNTER   BRANCH IF NO COMMANDS LEFT   GET ANOTHER COMMAND   CLEAR CARRY IF NUMERIC   BRANCH IF MORE NUMERIC DATA TO CONVERT   ADD ONE TO THE COMMAND COUNTER             MOVE THE COMMAND STRING BACK ONE   LOAD ACCD WITH THE VALUE OF THE SUBCOMMAND    MULTIPLY ACCD BY 2  SAVE ACCD TIME 2    NOW ACCD   ACCD   8  ADD ACCD 2  THE RESULT IS NOW          10    RETURN IF LESS THAN ASCII ZERO    SET CARRY IF NOT 0 9    GET THE COMMAND POINTER   SAVE IT   GET A COMMAND STRING CHARACTER   SET CARRY IF NOT UPPER CASE ALPHA   ILLEGAL FUNCTION CALL ERROR IF NOT ALPHA   ILLEGAL VARIABLE NAME  GET COMMAND STRING CHARACTER   CHECK FOR A SEMICOLON  SUBCOMMAND SEPARATOR    LOOP UNTIL SEMICOLON FOUND   GET THE START OF THE VARIABLE NAME   GET THE CURRENT ADDRESS OF THE VARIABLE NAME   SAVE IT   PUT THE COMMAND POINTER IN PLACE OF BASIC S INPUT POINTER  EVALUATE AN ALPHA EXPRESSION   GET BASIC S POINTER BACK   RESTORE BASIC S INPUT POINTER    TURN OFF HI RES GRAPHICS MODE   RAM HOOK   TEST FOR END OF LINE   NO ARGUMENT GIVEN   FC  ERROR IF NO ARGUMENT   EVALUATE EXPRESSION  RETURN VALUE IN ACCB  32 COLUMNS    48 COLUMNS  80 COLUMNS    ILLEGAL FUNCTION CALL ERROR    32 COLUMN MODE FLAG   SAVE THE HI RES TEXT MODE  CLEAR THE 32 COLUMN SCREEN  SETUP THE VIDEO MODE REGISTERS    40 COLUMN MODE FLAG   SAVE THE HI RES TEXT MODE   PUT THE HI RES TEXT SCREEN INTO THE LOGICAL ADDRESS SPACE  48 CO
186. N  DCNVEC  DEVNUM  DISK20MS  DISK21MS  DOSBAS  EBCOMTAB  ENDMOVE  ERLIN  ERNO   ERR  EVALEXPB  EXBAS    E288  E389  E429    EXECCART  FP EXP  FPAG  FRETOP  FUNDIC28  FUNDIS2   GIBITPIX  G2BITBIX  G4BITPIX  GETBLOK   GETCCH  GETNCH  GETTASK   GETTASK1  GETTEXT  GIVABF    H     COLUMN    CRSATT    CRSLOC    CURSX    CURSY   DISPEN    ERLINE    ERRBRK    ERROR    FCOLOR    ONBRK    ONBRKS    ONERR    ONERRS    IS                                 E    BCOLOR    HPUT  HRESBUFF  HRESET  HRMODE  HRWIDTH  HSCREEN  HSET  HSTAT  ILLFUNC  IM CMP  IM GRAPH    SUPER EXTENDED BASIC 2 0 SYMBOL TABLE              004    0050  0021    264    27    E7FF  E820  E83F            00  5  009                        E008  B4F4  FE B  FE04  FE08  FE00  FE02  FE03  FE06  FE13  FE17      10                      FE15                11      19      18  ED58  E7DA  EA49  E6CF  E6F4  F39D  EDE5  E882  OOBD  00  9  00  7  0063  EBF5  E85C  EF3F  EDED   000    765  OBES  00   7    688    761    925    44      654    070    APPENDIX C    IM MMU  IM PALET  IM RGB  IM TEXT  INIT    INIT1  INT  FLAG  INTCNV  INTIMAGE  KEYIN  14000   8088    80  7  18800  L883F  LA CE  LA35F  LA39   LA3C6  LA554  LA7D3  LA928  LAC33  LAC44  LAC46  LAC49  LAC65  LAC76  LACAG  LAD 5  LAD19  LAD43  LADC4  LADD4  LADF4  LAE09  LAE11  LAEBB  LAEEB  LAF45  LAF67  LB141  LB156  LB262  LB267  LB26A  LB26F  LB277  LB284  LB2CE  LB357  LB3A2  LB3E9  LB4F3  LB511  LB516  LB54C  LB56D  LB654    C1          1    678    664  E032      90      91
187. NE ROW   RESTORE THE NORMAL BASIC PROGRAM BLOCK TO LOGICAL BLOCK 1    SPACE CHARACTER   GET THE ATTRIBUTES RAM IMAGE   SAVE A SPACE ON THE SCREEN AT THE OLD CURSOR POSITION  FORCE THE UNDERLINE ATTRIBUTE   SAVE AN UNDERLINED SPACE AS THE NEW CURSOR CHARACTER  MOVE THE CURSOR POINTER BACK TWO   AND SAVE IT IN RAM   GET THE COLUMN AND ROW POSITION OF THE OLD CURSOR  BUMP THE COLUMN NUMBER DOWN ONE   BRANCH IF NO WRAP AROUND   BUMP THE ROW COUNTER DOWN ONE   SAVE THE NEW CURSOR ROW NUMBER   GET THE NUMBER OF CHARACTERS PER ROW   MAKE THE HIGHEST ALLOWABLE COLUMN NUMBER  ZERO IS FIRST   SAVE THE NEW CURSOR COLUMN NUMBER    CMPX  LF74D  BCS     LF74D  PULS X  RTS    GET AN INPUT LINE FOR BASIC PATCH ENTERED FROM  A38D  ALINK27 TST  HRWIDTH  BNE     LF761  JSR 14928  LF75E JMP 14390  LF761 1858 LF6ES  BRA    LF75E  LF766   PSHS Y  LEAY LE8CF PC  STA  03 Y  STA  8C Y  PULS Y PC  LF772 ORCC 4550  LBSR SELTEXT  RTS  LF778  LBSR SETMMU  ANDCC   AF  RTS     PATCH 24   BLINK THE CURSOR PATCH ENTERED FROM  A0D4  ALINK24 BSR LF787  JSR             BEQ     ALINK24  PULS B X PC  LF787         BLKCNT  BNE    LF7AB8  LDB  11  STB               BSR LF772  LDX     H CRSLOC  LDA      01 X           4540  BEQ     LF79F  LDA     H CRSATT  BRA     LF7A4  LF79F 10   H CRSATT  ORA 4540  LF7A4 STA   81 X  BSR    LF778  LF7A8 LDX  DEBDEL  JMP LA7D3    PATCH 22   PUT A CHARACTER ON THE SCREEN PATCH  ALINK22 BSR  LF772  LBRN     RAMLINK  LDX     H CRSLOC  CMPA  85  BNE     LF7C4  DO A BACKSPACE HERE  CMPX
188. NMI RMB 3      1 0 AREA   PIAS EQU   PERIPHERAL INTERFACE ADAPTER ONE   BIT   KEYBOARD ROW 1 AND RIGHT JOYSTICK SWITCH 1            KEYBOARD ROW 2 AND LEFT JOYSTICK SWITCH 1   BIT2 KEYBOARD ROW 3 AND RIGHT JOYSTICK SWITCH 2   BIT3 KEYBOARD ROW 4 AND LEFT JOYSTICK SWITCH 2   BIT4 KEYBOARD ROW 5   BITS KEYBOARD ROW 6   BIT6 KEYBOARD ROW 7   BIT7 JOTSTICK COMPARISON IINPUT   BITE CONTROL OF HSYNC  63 5ps  0   IRQ  TO CPU DISABLED  INTERRUPT 1   IRQ  TO CPU ENABLED            CONTROL OF INTERRUPT 0   FLAG SET ON FALLING EDGE OF HS  POLARITY 1    FLAG SET ON RISING EDGE OF HS   BIT2 NORMALLY 1      CHANGES FF00 TO DATA DIRECTION   BIT3 SEL 1 LSB OF TWO ANALOG MUX SELECT LINES   BIT4 ALWAYS 1   BITS ALWAYS 1   BIT6 NOT USED   BIT7 HORIZONTAL SYNC INTERRUPT FLAG   BITE KEYBOARD COLUMN 1            KEYBOARD COLUMN 2   BIT2 KEYBOARD COLUMN 3   BIT3 KEYBOARD COLUMN 4   BIT4 KEYBOARD COLUMN 5   BITS KEYBOARD COLUMN 6   BIT6 KEYBOARD COLUMN 7   RAM SIZE OUTPUT   BIT7 KEYBOARD COLUMN 8    A8    SUPER EXTENDED BASIC UNRAVELLED II       0593   0594 FF03 BITE  0595   0596 BIT1  0597   0598 BIT2  0599 BIT3  0600 BIT4  0601 BIT5  0602 BIT6  0603 BIT7  0604   0605 FF04   0606 FF20 DA  0607 FF20 PIA1  0608   0609 FF20 BIT    0610           0611       2  0612 BIT3  0613       4  0614       5  0615 BIT6  0616 BIT7  0617   0618 FF21 BIT    0619   0620           0621   0622       2  0623 BIT3  0624       4  0625       5  0626 BIT6  0627 BIT7  0628   0629 FF22 BIT    0630           0631       2  0632
189. NRAVELLED II    LC2FD  LC2FE  LC301  LC303  LC304  LC307  LC389  LC30A  LC30D  LC322  LC334  LC33B  LC349  LC351  LC352  LC355  LC356  LC35A  LD67F  LDC 5  LE010  LE033  LE03B  LE03C  LE044  LE045  LE063  LE 6D  LE 6E  LE 6F  LE 71  LE 79  LE 7A  LE 8B  LE CB         9  LEQF1  LE F7  LE148  LE14D  LE152  LE158  LE15B  LE15D  LE163  LE165  LE167  LE168  LE16A  LE16C  LE18B  LE19A  LE19E  LE1AE  LE1B2  LE1BF  LE1CA  LE1D1  LE1D8              E071        8                    9                  7    148  E14D  E152  E158  E15B  E15D  E163  E165  E167  E168  E16A  E16C  E18B  E19A  E19E            E1B2            E1CA    101    108    LE1DD  LE1E1  LE1E7  LE1ED  LE1F4  LE1F9  LE1FD  LE201  LE206  LE20C  LE20F  LE212  LE218  LE21D  LE221  LE227  LE22C  LE22F  LE232  LE238  LE23A  LE23C  LE23E  1  240  LE242  LE244  LE246  LE248  LE24A  LE24C  LE24E     250  LE252  LE254  LE256  LE258  LE25A  LE25C  LE25E  LE269  LE262  LE269  LE26F  LE275  LE279  1  280  LE282  LE284  LE286  LE2C   LE2C1  LE2DA  LE2DB  LE2F7  LE313  LE333  LE334  LE33D  LE33E    SUPER EXTENDED BASIC 2 0 SYMBOL TABLE    E1DD    1  1    1  7    1      E1F4  E1F9  E1FD  E201  E206  E20C    20      212    218  E21D  E221  E227  E22C  E22F  E232  E238  E23A  E23C  E23E  E240  E242  E244  E246  E248  E24A  E24C  E24E  E250  E252  E254  E256  E258  E25A  E25C  E25E  E260  E262  E269  E26F  E275  E279  E280  E282  E284  E286    2  0  E2C1  E2DA  E2DB  E2F7  E313  E333  E334  E34D  E34E    APPENDIX C    LE36A  LE36B  LE386 
190. NUMBER IF BREAK VECTORED US HERE    GET THE ON ERROR SOURCE LINE NUMBER   SAVE THE SOURCE LINE NUMBER AS THE CURRENT LINE NUMBER  UNDEFINED LINE NUMBER ERROR   JUMP TO THE ERROR SERVICING ROUTINE   AC49     GET THE ON BRK SOURCE LINE NUMBER   BRANCH IF ON BRK NOT INITIALIZED   AE11    SAVE THE ON BRK SOURCE ADDRESS   BREAK FLAG   SET THE ERROR BREAK FLAG TO BREAK   RESTORE SOURCE ADDRESS   INEFFICIENT  LDD H ONBRK IS BETTER    EVALUATE A NUMERIC EXPRESSION   ROM HOOK   CONVERT          INTO AN EXTENDED ADDRESS   HIGHEST POSSIBLE BLOCK NUMBER   ILLEGAL FUNCTION CALL ERROR IF BLOCK NUMBER TOO BIG  SAVE REGISTERS   DO A SYNTAX CHECK FOR A COMMA   EVALUATE EXPRESSION  RETURN VALUE IN ACCB   SAVE THE BLOCK NUMBER IN ACCA   RESTORE REGISTERS   COMPARE TO HIGHEST POSSIBLE BLOCK NUMBER  ILLEGAL FUNCTION CALL ERROR   DISABLE INTERRUPTS   PUT THE INTERPRETED BLOCK INTO LOGICAL BLOCK 9  STORE THE VALUE BEING POKEd   RESTORE THE MMU REGISTERS TO WHAT BASIC EXPECTS  ENABLE THE IRQ AND FIRQ INTERRUPTS    SUPER EXTENDED BASIC UNRAVELLED II    1153  1154  1155  1156  1157  1158  1159  1168  1161  1162  1163  1164  1165  1166  1167  1168  1169  1178  1171  1172  1173  1174  1175  1176  1177  1178  1179  1188  1181  1182  1183  1184  1185  1186  1187  1188  1189  1198  1191  1192  1193  1194  1195  1196  1197  1198  1199  1200  1201  1202  1203  1204  1205  1206  1207  1208  1209  1210  1211  1212  1213  1214  1215  1216  1217  1218  1219  1220  1221  1222  1223  1224  1225  1226  1227  1228  
191. O CPU DISABLED  IRQ  TO CPU ENABLED  FLAG SET ON FALLING EDGE OF FS  FLAG SET ON RISING EDGE OF FS  CHANGES FF02 TO DATA DIRECTION  OF TWO ANALOG MUX SELECT LINES    PIA   IMAGES    PERIPHERAL INTERFACE ADAPTER TWO    FIRQ  TO CPU DISABLED   FIRQ  TO CPU ENABLED   FLAG SET ON FALLING EDGE OF CD  FLAG SET ON RISING EDGE OF CD  CHANGES     2   TO DATA DIRECTION  OFF 1   ON     amp  UPPER LOWER CASE    amp  INVERT    FIRQ  TO CPU DISABLED   FIRQ  TO CPU ENABLED   FLAG SET ON FALLING EDGE OF CART   FLAG SET ON RISING EDGE OF CART   CHANGES FF22 TO DATA DIRECTION    DISK CONTROL REGISTER    DRIVE MOTOR ENABLE      MOTORS OFF 1   MOTORS ON  WRITE PRECOMPENSATION      NO PRECOMP 1   PRECOMP  DENSITY FLAG      SINGLE 1   DOUBLE  DRIVE SELECT 3   HALT FLAG 0   DISABLED 1   ENABLED  RMB 7 DSKREG IMAGES      FLOPPY DISK CONTROLLER INTERNAL REGISTERS  STATUS COMMAND REGISTER    RMB 1    A9    SUPER EXTENDED BASIC UNRAVELLED II       0740          9            FFAB  FFAC    FF50  FF60  FF61  FF62  FF63    FF68  FF69  FF6A  FF6B  FF6C  FF70  FF7D  FEZE  FF7F    FF80    FF90    FF90    FF91    FF91    COMMANDS    STATUS      RS 232 PROGRAM    TYPE COMMAND    BIT    RMB  RMB  RMB  RMB    RMB  RMB  RMB  RMB  RMB    RMB  RMB  RMB  RMB  RMB  RMB  RMB  RMB  RMB    RMB    RESTORE   SEEK   STEP   STEP IN   STEP OUT  READ SECTOR  RITE SECTOR  EAD ADDRESS  EAD TRACK  RITE TRACK  ORCE INTERRUPT                          1   USY   NDEX   RACK 0   RC ERROR   EEK ERROR  EAD LOADED  RITE PROTECT  NOT READ
192. ORD   SAVE DIFFERENCE IN Y   ADD ONE TO DIFFERENCE   TURN ON STARTING AND ENDING COORDS  GET ABSOLUTE SCREEN ADDRESS IN X AND PIXEL MASK IN ACCA  GET START COORDS   RESTORE THEM   POINT U TO ROUTINE TO MOVE PIXEL POINTERS TO RIGHT  SAVEL PIXEL MASK   TURN ON PIXEL   GET OLD PIXEL MASK   MOVE TO NEXT ONE TO RIGHT   DEC COUNTER   LOOP IF NOT DONE    CLEAN UP STACK   HORIZONTAL COORD HORBEG   GET END VERTICAL COORDS   SAVE  EM   CALCULATE ABSOLUTE VALUE OF VEREND VERBEG   BRANCH IF END COORD    START COORD   GET VERTICAL END COORDINATE   MAKE IT THE START COORD IF END COORD WAS RIGHT OF START  LENGTH OF LINE TO Y   SET BOTH START AND END COORDS   GET ABSOLUTE SCREEN ADDRESS IN X AND PIXEL MASK IN ACCA  GET END COORDS   RESTORE THEM   POINT U TO ROUTINE TO MOVE DOWN ONE ROW   DRAW A VERTICAL LINE    VEREND    POINT Y TO INCREMENT VERBEG  VERTICAL START COORD   CALCULATE VERTICAL DIFFERENCE  VEREND VERBEG    DRAW A HORIZONTAL LINE IF DELTA V    BRANCH IF VERTICAL END COORD  gt  VERTICAL START COORD  POINT Y TO DECR VERTICAL COORD   SAVE DELTA V   POINT U TO INCR HORIZONTAL COORD   CALCULATE HORIZONTAL DIFFERENCE  HOREND HORBEG    DRAW A VERTICAL LINE IF DELTA    0   BRANCH IF HORIZONTAL END COORD    HORIZONTAL START COORD  POINT U TO DECR HORIZONTAL COORD   COMPARE DELTA H TO DELTA V   PUT DELTA V IN X   BRANCH IF DELTA H    DELTA V   SWAP CHANGE HORIZONTAL AND CHANGE VERTICAL ADDRESS  EXCHANGE DELTA HORIZONTAL AND DELTA VERTICAL   SAVE THE LARGER OF DELTA V  DELTA H AND INCR DECR
193. ORD  EI2  and EIO Interrupts    The other interrupts are similar to their counterparts in the Color Computer  2  HBORD causes an interrupt at the falling edge of the horizontal sync  the Color  Computer 2 actually generated this interrupt at the blanking pulse a subtle  difference   The VBORD interrupt is generated at the falling edge of the vertical  sync  The EI2 interrupt is connected to the status line of the RS 232C serial  connector  printer port          the        interrupt is connected to the expansion  ROM  PAK  port     An Example    Lastly  as an example  let s set up the computer to generate an IRQ interrupt  when a key is pressed on the keyboard  The following assembly code would produce  this result     First enable the IRO interrupt  LDA   20 CODE TO ENABLE IRQ INTERRUPT  STA  FF9  TURN ON INTERRUPT  Now enable the Keyboard Interrupt at  FF92  LDA  2 CODE TO ENABLE KEYBOARD INTERRUPT  STA  FF92 ENABLE KEYBOARD IRQ  CLR  FF 2 CLEAR KEYBOARD STROBE LINES    The service routine  of course  would read  FF92 and check to make sure the  keyboard interrupt was responsible for the interrupt     28    SUPER EXTENDED BASIC UNRAVELLED II INTERRUPTS    ORIGIN  SPECTRAL ASSOC    REVISED 12 26 99 WALTER K ZYDHEK    Interrupt Vectors    When an interrupt occurs  the computer must know where to    go to process the    interrupt  To find this information  the computer looks into the  FF02    FFFF    range  which is defined as follows     Address Interrupt CoCo 2 Vector CoCo 3 
194. OVE LEAS   01 5 MAKE A TEMPORARY STORAGE LOCATION ON THE STACK   0036 C041 12 NOP   0037 C042 12 NOP   0038 C843 12 NOP   0039 C044 12 NOP   0040   C045 12 NOP SPACE FILLER NOPS   THEY SERVE NO PURPOSE   0041 C046 86 FF LDA   FF   0042   C048 B7 FF 94 STA V TIMER   0043   04   B7 FF 95 STA V TIMER 1 SET THE TIMER TO  FFFF AND START IT COUNTING   0044   0045   SET UP THE VIDEO CONTROL REGISTERS   0046   04   30 8D 01 DC LEAX VIDIMAGE PC POINT X TO THE VIDEO CONTROL REGISTER IMAGE   0047 C052 10 8E FF 98 LDY  VIDEOREG POINT Y TO THE VIDEO CONTROL REGISTERS   0048  056      80 1  056 LDA X GET A BYTE FROM THE IMAGE   0049  058 A7 AQ STA   Y  SAVE IT IN THE VIDEO REGISTER   0050 CO5A 10 8C FF AQ CMPY  MMUREG CHECK FOR THE END OF THE VIDEO MODE REGISTERS   0051  C  O5E 26 F6 BNE 1  056 LOOP UNTIL DONE   0052   INITIALIZE            0053  060           20 LDX  PIAL POINT X TO PIA 1   0054   063 CC FF 34 LDD   FF34   0055 C066 6   01 CLR 501    CLEAR CONTROL REGISTER A   0056  068 6F 03 CLR 503    CLEAR CONTROL REGISTER B  ENABLE BOTH DATA DIRECTION REGISTERS  0057   0  6        DECA SET ACCA TO  FE   0058  068 A7 84 STA   X BIT 6 INPUT  ALL OTHERS OUTPUT ON PORT A   0059  060 86 F8 LDA   F8   0060   06   A7 02 5     502    BITS 0 2 INPUT  3 7 OUTPUT ON PORT B   0061 C071 E7 01 STB 501    SET PORT TO PERIPHERAL REGISTER  CA1 DISABLED  CA2 ENABLED AS INPUT  0062   073 E7 03 STB 503    SET PORT TO PERIPHERAL REGISTER         DISABLED  CB2 ENABLED AS INPUT  0063     C075 6F 02 CLR 502 
195. PLYTMR RMB 2  DOTYAL RMB  HRMODE EQU 3  DLBAUD RMB  HRWIDTH EQU 3  TIMOUT RMB  ANGLE RMB  SCALE RMB    DSKCON VARIABLES  DCOPC RMB  DCDRV RMB  DCTRK RMB  DSEC RMB  DCBPT RMB 2  DCSTA RMB  FCBTMP RMB 2   RMB 3          APPENDIX A ORIGIN SPECTRAL ASSOC  MEMORY MAP REVISED 12 26 1999 WALTER K ZYDHEK     PV THESE 2 BYTES CONTAIN ADDRESS OF THE CURRENT  CHARACTER WHICH THE BASIC INTERPRETER IS  PROCESSING   JUMP BACK INTO THE BASIC RUM    LOW ORDER FOUR BYTES OF THE PRODUCT  OF A FLOATING POINT MULTIPLICATION   THESE BYTES ARE USE AS RANDOM DATA   BY THE RND STATEMENT    TRACE FLAG 0        ELSE ON   ADDRESS OF THE START OF USR VECTORS  FOREGROUND COLOR   BACKGROUND COLOR   WORKING COLOR BEING USED BY EX BASIC  ALL PIXELS IN THIS BYTE SET TO COLOR OF VB3  PMODE S MODE ARGUMENT   END OF CURRENT GRAPHIC PAGE   NUMBER OF BYTES HORIZONTAL GRAPHIC LINE  START OF CURRENT GRAPHIC PAGE   PV START OF GRAPHIC RAM  MS BYTE    DV   PV HORIZ COORD   START POINT   DV   PV VERT COORD   START POINT   PV SCREEN S COLOR SET ARGUMENT   PV PRESET PSET FLAG     PRESET  1 PSET   DV   PV HORIZ COORD   ENDING POINT   DV   PV VERT COORD   ENDING POINT   PV HORIZ COORD   DEFAULT COORD   PV VERT COORD   DEFAULT COORD                   lt   lt   lt  lt     a4            UU 0       lt      X   FF ok ob ok FF FF ox o ox        x       BASIC SCRATCH PAD VARIABLES     TV FLAG TO INDICATE IF GRAPHIC DATA HAS BEEN CHANGED   TV STACK POINTER STORAGE DURING PAINT   PV OCTAVE VALUE  PLAY    DV   PV VOLUME HIGH VALUE 
196. PONENT   RMB 4    MANTISSA  INITIALLY SET TO  804FC75259  CASFLG RMB 1 UPPER CASE LOWER CASE FLAG   FF UPPER  O LOWER  DEBVAL RMB 2 KEYBOARD DEBOUNCE DELAY  SET TO  45E   EXPJMP RMB 3 JUMP ADDRESS FOR EXPONENTIATION     INITIALLY SET TO ERROR FOR BASIC   8489 FOR      BASIC  ER COMMAND INTERPRETATION VECTOR TABLE         FOUR SETS OF 10 BYTE TABLES        THE LAST USED TABLE MUST BE FOLLOWED BY A ZERO BYTE     THE JUMP TABLE VECTORS  3 4 AND 8 9  POINT TO THE JUMP TABLE FOR    THE FIRST TABLE  FOR ALL OTHER TABLES  THESE VECTORS POINT TO A     ROUTINE WHICH WILL VECTOR YOU TO THE CORRECT JUMP TABLE      SUPER ENHANCED BASIC HAS MODIFIED THIS SCHEME SO THAT THE USER     TABLE MAY NOT BE ACCESSED  ANY ADDITIONAL TABLES WILL HAVE TO BE    ACCESSED FROM A NEW COMMAND HANDLER        m BYTE DESCRIPTION       NUMBER OF RESERVED WORDS    1 2 LOOKUP TABLE OF RESERVED WORDS    3 4 JUMP TABLE FOR COMMANDS  FIRST TABLE   E VECTOR TO EXPANSION COMMAND HANDLERS  ALL BUT FIRST TABLE      5 NUMBER      SECONDARY FUNCTIONS    6 7 LOOKUP TABLE OF SECONDARY FUNCTIONS  FIRST TABLE      VECTOR TO EXPANSION SECONDARY COMMAND HANDLERS  ALL BUT  m FIRST TABLE      8 9 JUMP TABLE FOR SECONDARY FUNCTIONS    10    BYTE   END OF TABLE FLAG  LAST TABLE ONLY   COMVEC RMB 10 BASIC S TABLE  RMB 10 EX BASIC S TABLE  RMB 10 DISC BASIC S TABLE  UNUSED BY EX BASIC        USR FUNCTION VECTOR ADDRESSES  EX BASIC ONLY   RMB 2 USR 6 VECTOR  RMB 2 USR 1  RMB 2 USR 2  RMB 2 USR 3  RMB 2 USR 4  RMB 2 USR 5  RMB 2 USR 
197. PUT BLOCK 6 6 INTO LOGICAL BLOCK 1    COPY THE MMU IMAGES INTO THE MMU REGISTERS  ENABLE IRQ  FIRQ    BLINK THE CURSOR  GET A KEY  LOOP UNTIL A KEY IS PRESSED    DECREMENT THE CURSOR BLINK DELAY   IT S NOT TIME TO BLINK THE CURSOR   CURSOR BLINK DELAY CONSTANT   RESET THE CURSOR BLINK DELAY COUNTER   PUT THE HI RES TEXT SCREEN INTO THE LOGICAL ADDRESS SPACE  POINT TO THE CURSOR CHARACTER   GET THE CURSOR CHARACTER S ATTRIBUTES   IS THE UNDERLINE MODE ACTIVE    BRANCH IF NOT ACTIVE UNDERLINE   GET THE CURSOR ATTRIBUTES RAM IMAGE   PUT IT ON THE SCREEN   GET THE CURSOR ATTRIBUTES RAM IMAGE   FORCE THE UNDERLINE ATTRIBUTE   SAVE THE NEW CURSOR ATTRIBUTES IN THE HI RES TEXT SCREEN   RESTORE THE NORMAL BASIC PROGRAM BLOCK TO LOGICAL BLOCK 1  GET THE KEYBOARD DEBOUNCE DELAY   GO WAIT A WHILE   A7D3     ENTERED FROM  BC3D   PUT THE HI RES TEXT SCREEN INTO THE LOGICAL ADDRESS SPACE  RAM HOOK   POINT TO THE CURSOR CHARACTER   BACKSPACE CHARACTER    NO    ARE WE AT THE UPPER LEFT HAND CORNER OF THE SCREEN   YES  DO NOT ALLOW A BACKSPACE  DO A BACKSPACE ON THE HI RES SCREEN    ENTER KEY    NO   DO A CARRIAGE RETURN ON THE HI RES SCREEN   CHECK TO SEE IF THE SCREEN SHOULD BE SCROLLED   CHECK FOR A CONTROL CHARACTER   DO NOTHING IF A CONTROL CHARACTER   GET THE CURSOR ATTRIBUTES RAM IMAGE   PUT THE NEW CHARACTER AND ATTRIBUTES INTO THE HI RES TEXT SCREEN  MOVE THE CURSOR FORWARD ONE CHARACTER   CHECK FOR THE END OF THE HI RES TEXT SCREEN   BRANCH IF NOT AT THE END   SCROLL THE SCREEN UP O
198. R POINTER  CCKSUM RMB  TV CASSETTE CHECKSUM BYTE  CSRERR RMB  TV ERROR FLAG CHARACTER COUNT  CPULWD RMB  TV PULSE WIDTH COUNT  CPERTM RMB  TV BIT COUNTER  CBTPHA RMB  TV BIT PHASE FLAG  CLSTSN RMB  TV LAST SINE TABLE ENTRY  GRBLOK RMB  TV GRAPHIC BLOCK VALUE FOR SET  RESET AND POINT  IKEYIM RMB  TV INKEY  RAM IMAGE  CURPOS RMB 2  PV CURSOR LOCATION  ZERO RMB 2  PV DUMMY   THESE TWO BYTES ARE ALWAYS ZERO  SNDTON RMB  TV TONE VALUE FOR SOUND COMMAND  SNDDUR RMB 2  TV DURATION VALUE FOR SOUND COMMAND     THESE BYTES ARE MOVED DOWN FROM ROM  TAX INIT DESCRIPTION    VALUE  CMPMID RMB 8  PV 1200 2400 HERTZ PARTITION           RMB 24  PV UPPER LIMIT OF 1200 HERTZ PERIOD  CMP1 RMB 0  PV UPPER LIMIT OF 2400 HERTZ PERIOD  SYNCLN RMB 2 28  PV NUMBER OF  55 S TO CASSETTE LEADER  BLKCNT RMB 1  PV CURSOR BLINK DELAY  LPTBTD RMB 2 88  PV BAUD RATE CONSTANT  600   LPTLND RMB 2  PV PRINTER CARRIAGE RETURN DELAY  LPTCFW RMB 6  PV TAB FIELD WIDTH  LPTLCF RMB 12  PV LAST TAB ZONE  LPTWID RMB 32  PV PRINTER WIDTH  LPTPOS RMB 0  PV LINE PRINTER POSITION  EXECJP RMB 2 LB4AA  PV JUMP ADDRESS FOR EXEC COMMAND             THIS ROUTINE PICKS UP THE NEXT INPUT CHARACTER FROM     BASIC  THE ADDRESS OF THE NEXT BASIC BYTE TO BE     INTERPRETED IS STORED AT CHARAD     GETNCH INC  lt CHARAD 1  PV INCREMENT LS BYTE OF INPUT POINTER  BNE  GETCCH  PV BRANCH IF NOT ZERO  NO CARRY   INC       CHARAD  PV INCREMENT MS BYTE OF INPUT POINTER    GETCCH FCB 986  PV OP CODE OF LDA EXTENDED    A3    SUPER EXTENDED BASIC
199. RA  PULS  PULS     5  504 5  LE98D  E       LE98D  X    APPENDIX B    DISASSEMBLY OF SUPER EXTENDED BASIC 1 1    A B X  Y U  PC    SAVE NEW MINOR COORDINATE INCREMENT COUNTER  SUBTACT OUT THE LARGEST DIFFERENCE   BRANCH IF RESULT NOT    LARGEST DIFFERENCE   IF  gt    THEN STORE NEW MINOR COORDINATE INCREMENT  INCR DECR COORDINATE WHICH HAS THE SMALLEST DELTA  KEEP GOING   CLEAN UP STACK   CLEAN UP STACK AND RETURN      THESE ROUTINES ARE USED TO INCREMENT OR DECREMENT THE HORIZONTAL AND VERTICAL    COORDINATES  THEY NEED TO BE KEPT IN THIS ORDER  INCR  INCR  DECR  DECR     LE9B1    LE9BF    LE9CC    LE9CD    LE9D1    LDX  LEAX  STX  RTS  LDX  LEAX  STX  RTS  LDX  LEAX  STX  RTS  LDX  LEAX  STX  RTS    LDD  SUBD  BCC  PSHS    HORBEG  01     HORBEG    VERBEG  1 X  VERBEG    HORBEG   01     HORBEG    VERBEG   01     VERBEG       VEREND  VERBEG  LE9CC  cc      THE NEXT THREE INSTRUCTIONS WILL NEGATE ACCD    LE9DB                   LE9E1    LE9F      LEAG4    LEAGA  LEA D    NEGA  NEGB  SBCA  PULS    LDD  SUBD  BRA     900               HOREND  HORBEG  LE9D1    GET HORIZONTAL COORD  ADD ONE  SAVE NEW HORIZONTAL COORD    GET VERTICAL COORD  ADD ONE  SAVE NEW VERTICAL COORD    GET HORIZONTAL COORD  SUBTRACT ONE  SAVE NEW HORIZONTAL COORD    GET VERTICAL COORD  SUBTRACT ONE  SAVE NEW VERTICAL COORD    GET VERTICAL ENDING ADDRESS   SUBTRACT OUT VERTICAL BEGINNING ADDRESS  RETURN IF END  gt   START   SAVE STATUS  WHICH COORDINATE IS GREATER     NEGATE ACCB  RESTORE STATUS AND RETURN   
200. RAGE ON THE STACK    S UP DN FLAG  1 S VERTICAL COORD   OF LINE  2 3 S LEFT MOST HORIZONTAL COORD OF LINE  4 5 S LENGTH OF LINE      SAVE A BLOCK OF PAINT DATA FOR A LINE IN THE OPPOSITE DIRECTION OF THE CURREN UP DN FLAG    LED15    LED28      SAVE A  LED2E    LED3A    STD  PULS  LDD  PSHS  LDA  NEGA  LDB  PSHS  PSHS  LDB  JSR  LDD  RTS    BLOCK  STD  PULS  LDD  PSHS  LDA  BRA  LDX  STX  RTS    VCB  Y  HORBEG  X B A    07    VERBEG 1          Y   3506  LED3F  VCB    SAVE NUMBER OF PIXELS PAINTED   GET RETURN ADDRESS IN Y   GET HORIZONTAL START COORD   PUT ON STACK   GET UP DN FLAG   REVERSE IT   GET VERTICAL START COORDINATE   SAVE VERTICAL START COORD AND UP DN FLAG  PUT BACK RETURN ADDRESS   GET NUMBER OF FREE BYTES TO CHECK FOR  GO SEE IF THERE IS ENOUGH RAM   GET LENGTH OF RIGHT PAINTED LINE    OF PAINT DATA FOR A LINE IN THE SAME DIRECTION AS THE CURRENT UP DN FLAG    VCB  Y  HOREND  X B A    07  1  020  HORBEG  HOREND    SAVE THE LENGTH OF RIGHT HORIZONTAL PAINTED LINE  SAVE RETURN ADDRESS IN Y   GET HORIZONTAL START COORD   SAVE START COORD AND LENGTH   GET UP DN FLAG  1 OR  1    SAVE THE PAINT DATA ON THE STACK   GET CURRENT HORIZONTAL COORD   SAVE IT      CHECK ACCB  ONLY 0 127  BYTES OF FREE RAM ON THE STACK    LED3F    LED4E    HBUFF                              HBUFF  HBUFF    LED72    LED85    NEGB  LEAS  CMPS    LBCS  NEGB  LEAS  RTS  LDS  JSR  JMP    JSR  LBRN  CMPX  LBHI  STX  BEQ  JSR  JSR  STX  JSR  JSR  LDD  TSTB  BNE  LDD  STD  BRA  LDY  LDD  CMPD  BNE  B
201. RANCH IF 40 COLUMN TEXT MODE  LDX  LE079 POINT TO THE VIDEO RAM IMAGE FOR 80 COLUMN MODE  LEQ63 SUBA   01 ADJUST MODE NUMBERS TO START AT ZERO  LDA A Y GRAB THE PROPER VIDEO RESOLUTION MODE    B6    SUPER EXTENDED BASIC UNRAVELLED II    0577  0578  0579  0580  0581  0582  0583  0584  0585  0586  0587  0588  0589  0590  0591  0592  0593  0594  0595  0596  0597  0598  0599  0600  0601  0602  0603  0604  0605  0606  0607  0608  0609  0610  0611  0612  0613  0614  0615  0616  0617  0618  0619  0620  0621  0622  0623  0624  0625  0626  0627  0628  0629  0630  0631  0632  0633  0634  0635  0636  0637  0638  0639  0640  0641  0642  0643  0644  0645  0646  0647  0648  0649  0650  0651  0652  0653  0654  0655  0656  0657  0658  0659  0660  0661  0662  0663  0664  0665  0666  0667  0668  0669  0670  0671  0672        67      69        6        60  EQ6E      6      E678  E671  E077    E079  EQ7A  E688    E982  E684  E687  EQ8B  Eg8D          E993  E995    E697  E999      90      9            1            EQA7        9            EQAD  EQAF            EQB3          5        7            EQBD  EQBF                            5  EQC7        9              EQCD  EQD1  EQD3  EQD5      07      09  EQDB  E DD  EQDF              EQE7          9                        EQF5  EQF7  EQF9  EQFB  EQFC  EQFE    A7  7E    15  1E  14  1D    4C  80  00    4C  80  0g    A6  B7  18  A6  A7  18  25  35    34  30  80  35    34  30  34  E7  8D  C6  35  E7  35    34  30  34  C6  E7  8D  35  C6  E7  35    34  3
202. RDINATE FORE 640 PIXEL WIDE  IS THE HORIZONTAL COORDINATE    MAXIMUM VALUE    YES  USE THE MAXIMUM HORIZONTAL COORDINATE   GET THE NEW HORIZONTAL COORDINATE   SAVE THE HORIZONTAL COORDINATE    OF A PIXEL INTO THE SCREEN ADDRESS  X REG  AND  CONTAINING THE PIXEL   POINT U TO THE HCALPOS SUBROUTINE FOR THE CURRENT HRMODE  EXECUTE THE HCALPOS SUBROUTINE    POINT U TO THE CALPOS ADDRESS TABLE   GET THE HI RS GRAPHICS MODE    DECA WOULD DO  CONVERT FROM 1 4 TO 9 3   X2 BYTES PER ADDRESS   GET THE APPROPRIATE CALPOS ADDRESS FROM THE TABLE      CONVERT HORIZONTAL  VERTICAL COORDINATES INTO THE ADDRESS  X  FOR THE BYTE WHICH CONTAINS THE DESIRED    PIXEL AND A MASK  ACCA  WHICH HAS ONLY THOSE BITS WHICH CORRESPOND TO THE DESIRED PIXEL                     PSHS  LDB  LDA  MUL  ADDD  TFR  LDD  LSRA  RORB  LSRA  RORB  LSRA  RORB  LEAX  LDA  ANDA  LDU  LDA  PULS  G2BITBIX PSHS  LDB  LDA    U B  HORBYT  VERBEG 1    HHRESSCRN  D X  HORBEG    D X  HORBEG 1  4907  HPIXIMASK  A U  B U PC    U B    HORBYT  VERBEG 1    B16    SAVE REGISTERS   GET THE NUMBER OF BYTES PER HORIZONTAL ROW   GET THE VERTICAL COORDINATE   NOW ACCD CONTAINS THE ROW OFFSET IN BYTES FROM THE TOP OF SCREEN  ADD THE ROW OFFSET TO THE START OF THE SCREEN   X CONTAINS THE ADDRESS OF THE START OF THE ROW CONTAINING A PIXEL  GET THE HORIZONTAL COORDINATE      DIVIDE HORIZONTAL COORDINATE BY EIGHT   THERE ARE 8 PIXELS PER BYTE    ACCD CONTAINS THE COLUMN OFFSET TO THE PIXEL IN BYTES   ADD THE COLUMN OFFSET   X POINTS TO THE BYT
203. RE COMMERCIAL    MICROMS FCC    LF719 FCB     T Harris  amp  T Earles     800 500      NAMES OF THE AUTHORS      THE INITIALIZATION CODE WILL COPY THE AUTHOR S    AUTHORMS FCB  FCB  FCB  FCB    LF738 BSR  LBSR  BSR  LDX  JSR  PSHS  LEAX  LDA  STA  STA  LEAX    500 500 500 500 500 500  500 900 500 500 500  500  500  900  500  500  500  500  500  900  500    LF772   LF68C   LF778   AUTHORMS 1  STRINOUT   X   LF6F4 PC    12   X        AUTHORMS  PC    APPENDIX B  DISASSEMBLY OF SUPER EXTENDED BASIC 1 1    ORIGIN SPECTRAL ASSOC  REVISED 12 26 1999 WALTER K ZYDHEK    SAVE THE END OF THE HI RES TEXT SCREEN  RESET HI RES TEXT SCREEN   PUT BLOCK 7 1 INTO LOGICAL BLOCK 1  SETUP THE VIDEO MODE REGISTERS    80 COLUMN MODE FLAG   SAVE THE HI RES TEXT MODE   PUT THE HI RES TEXT SCREEN INTO THE LOGICAL ADDRESS SPACE  80 COLUMNS   MAXIMUM NUMBER OF ROWS   SAVE THE NUMBER OF COLUMNS AND ROWS   END OF THE HI RES TEXT SCREEN    POINT X TO THE TOP OF THE HI RES TEXT SCREEN   RAM HOOK   SAVE THE START OF THE HI RES TEXT SCREEN   INITIALIZE CHARACTERS TO SPACES   GET THE CHARACTER ATTRIBUTES   SAVE THE CHARACTER AND ATTRIBUTES IN HI RES TEXT SCREEN  COMPARE TO THE END OF HI RES TEXT SCREEN   LOOP UNTIL ALL MEMORY INITIALIZED   RESET X TO THE TOP OF THE SCREEN    SET THE CURSOR X COORDINATE  COLUMN  TO ZERO  SET THE CURSOR Y COORDIANTE  ROW  TO ZERO    RESTORE THE ZERO FLAG   RAM HOOK   CLEAR THE SCREEN CURSOR ATTRIBUTES IF NO ARGUMENT  EVALUATE EXPRESSION  RETURN VALUE IN ACCB   TEST ARGUMENT   BR
204. RESS   DECREMENT COMMAND COUNTER   CHECK FOR BLANK   IGNORE BLANKS   RESTORE X REGISTER AND RETURN    CHECK FOR A VARIABLE EQUATE   BRANCH IF NOT VARIABLE EQUATE   SAVE REGISTERS   INTERPRET THE VARIABLE IN THE COMMAND LINE  CONVERT VARIABLE INTO A POSITIVE INTEGER IN ACCD  SAVE THE SUBCOMMAND VALUE   RESTORE REGISTERS AND RETURN   CLEAR CARRY IF NUMERIC   ILLEGAL FUNCTION CALL IF NOT NUMERIC    SUPER EXTENDED BASIC UNRAVELLED II    3169  3178  3171  3172  3173  3174  3175  3176  3177  3178  3179  3180  3181  3182  3183  3184  3185  3186  3187  3188  3189  3198  3191  3192  3193  3194  3195  3196  3197  3198  3199  3200  3201  3202  3203  3204  3205  3206  3207  3208  3209  3218  3211  3212  3213  3214  3215  3216  3217  3218  3219  3220  3221  3222  3223  3224  3225  3226  3227  3228  3229  3230  3231  3232  3233  3234  3235  3236  3237  3238  3239  3240  3241  3242  3243  3244  3245  3246  3247  3248  3249  3250  3251  3252  3253  3254  3255  3256  3257  3258  3259  3260  3261  3262  3263  3264    F5BD  F5BF    F5C1  F5C3  F5C5  F5C7  F5C9  F5CB  F5CD  F5CF  F5D1  F5D3  F5D5  F5D8  F5DA  F5DD  FOES  F5E4  F5E6  F5E8  F5EA  F5ED  F5F    F5F2        4        6  F5F8  F5FA  F5FC    F5FD  F5FE  F5FF  F601  F602  F603  F604  F605  F607    F608  F60A  F60C  F60E  F610    F611  F613  F615  F618  F61B  F61F  F622  F624  F626  F628  F62A  F62C  F62E  F631  F633  F635    F636  F638  F63C  F63E  F640  F643  F645  F647  F649  F64B  F64D  F64F    F652  F653  F655  F658  F65B    F65C  F6
205. RN OFF INTERRUPTS DURING CHANGE  LDA   7E OP CODE FOR JMP INSTRUCTION   STA  FEF7 REPLACE LBRA WITH JMP   LDX   SERVIC POINT X TO SERVICE ROUTINE   SIX   FEF8 PLACE ADDRESS AFTER JMP ADDRESS  ANDCC   AF TURN INTERRUPTS BACK ON    29    SUPER EXTENDED BASIC UNRAVELLED II SUPER EXTENDED BASIC ORIGIN  SPECTRAL ASSOC  REVISED 12 26 99 WALTER K ZYDHEK    SUPER EXTENDED BASIC    Super Extended Basic has two major functions  First of all  it provides the  necessary machine code to initialize the computer and make Basic work therein   Secondly  several new Commands have been added  primarily to make use of the  advanced graphics and memory capabilities  In the following pages  we will discuss  each of these functions    Initialization    In addition to the all RAM mode  where all memory in the computer is RAM    there are 3 different ROM configurations  where some of the memory in the computer  is in ROM   ROM may be configured as one 32K block inside the computer   8000    FDFF   16K inside the computer   8000  BFFF  and 16K from the cartridge port    C000  FDFF   or 32K  except for the interrupt vectors  accessed through the  cartridge port    When the Color Computer 3 is turned on  the system is set up for 32K of ROM  inside the computer  After some preliminary initialization  a routine is copied  from the 32K ROM to  4000 in RAM and executed  This routine copies Extended Color  Basic  Super Extended Basic and Disk Basic  if available  into RAM  Once this is  done  the routine pat
206. ROCESS ANOTHER COMMAND    B31    SUPER EXTENDED BASIC UNRAVELLED II    2977  2978  2979  2980  2981  2982  2983  2984  2985  2986  2987  2988  2989  2990  2991  2992  2993  2994  2995  2996  2997  2998  2999  3000  3001  3002  3003  3004  3005  3006  3007  3008  3009  3010  3011  3012  3013  3014  3015  3016  3017  3018  3019  3020  3021  3022  3023  3024  3025  3026  3027  3028  3029  3030  3031  3032  3033  3034  3035  3036  3037  3038  3039  3040  3041  3042  3043  3044  3045  3046  3047  3048  3049  3050  3051  3052  3053  3054  3055  3056  3057  3058  3059  3060  3061  3062  3063  3064  3065  3066  3067  3068  3069  3070  3071  3072      451    453    457    459      45      45    F462  F464    F467  F469  F46B    F46D  FA6F  F471    F473  F475  F477  F479  F47B    F47D  F47F  F481  F483    F485  F487  F48A    F48C    48      490      492    494    F496  F498      9    FA9D  FA9F          1    4  4    4  6  F4A9  F4AB  F4AD  FAAF    F4B2  F4B4    4  6    4  7    4  9  F4BB  F4BD  FABF  FAC2  F4c4  F4C5  F4C6  F4C7    468  FACA    FACC  FACD  FACE    400  F4D1    4  3      4  4  F4D6  F4D8  F4DA  F4DC  F4DE    4      FAE3  F4E5  F4E7  F4E9  F4EB  F4ED  FAEF        1    C1  18  D7  16          18  D7  16    96  8D  20    96  1F  20    96  1F  8D  1E  20    96  1F  8D  20    96  8E  20    96  8D  20    96  20    96  8D  8E  1E  20    BD  C6  BD  D6  9E  34  7E    D6  27  4    1E  A7  2A  8D  BD  1F  44  56  44  56  6D  2A    40  50  82  39  1F  39    34  8D  35  34  8D  35 
207. RQ  SWI  NMI  RESETV    RMB  RMB  RMB  RMB  RMB  RMB  RMB  RMB  RMB  RMB  RMB  RMB  RMB  RMB  RMB  RMB  RMB  RMB  RMB  RMB    RMB    RMB  RMB  RMB  RMB  RMB  RMB  RMB       8       INTERRUPT VECTORS    PS no                               APPENDIX                            CLEAR          GRAPH    ICS OFFSET FO    SET COCO GRAPHICS OFFSET F      CLEAR COCO GRAPH    ICS OFFSET F1    SET COCO GRAPHICS OFFSET F1    CLEAR COCO GRAPH    ICS OFFSET F2    SET COCO GRAPHICS OFFSET F2    CLEAR COCO GRAPH    ICS OFFSET F3    SET COCO GRAPHICS OFFSET F3    CLEAR COCO GRAPH    ICS OFFSET F4    SET COCO GRAPHICS OFFSET F4    CLEAR COCO GRAPH    ICS OFFSET F5    SET COCO GRAPHICS OFFSET F5       CLEAR COCO GRAPH          ICS OFFSET F6    SET COCO GRAPHICS OFFSET F6    RESERVED  CLEAR CPU RATE      0 89 MHz     SET CPU RATE   1 78 MHz     RESERVED  ROM DISABLED  ROM ENABLED    RESERVED FOR FUTURE MPU ENHANCEMENTS    A15    ORIGIN SPECTRAL ASSOC    REVISED 12 26 1999 WALTER K ZYDHEK    SUPER EXTENDED BASIC UNRAVELLED II       APPENDIX B  DISASSEMBLY OF SUPER EXTENDED BASIC 1 1    ORIGIN SPECTRAL ASSOC  REVISED 12 26 1999 WALTER K ZYDHEK    0001 COBB ORG  C000   0002   0003 COBB 1A 50 1  000 ORCC 4950 DISABLE IRQ  FIRQ INTERRUPTS   0004 C002 10 CE      FF LDS   5EFF INITIALIZE STACK POINTER   0005   006 86 12 LDA 9512 PALETTE COLOR  COMPOSITE GREEN  RGB INDIGO   0006    INITIALIZE ALL PALETTE REGISTERS TO GREEN  COMPOSITE    0007  008 C6 10 LDB  16 16 PALETTE REGISTERS   0008               FF 
208. RROR BREAK FLAG TO ERROR  0    GET THE CURRENT LINE NUMBER   CHECK FOR DIRECT MODE   BRANCH IF DIRECT MODE   HAS AN ON ERROR TRAP BEEN SET UP    BRANCH IF ONE HAS   SAVE ACCA   TEST THE HI RES GRAPHICS MODE   RESTORE ACCA   BRANCH IF HI RES GRAPHICS NOT SET UP   PROGRAM THE VIDEO CONTROL REGISTERS FOR THE CURRENT MODE  HI RES GRAPHICS ERROR   BRANCH IF NOT   SET UP PRINT PARAMETERS   SEND A     TO CONSOLE OUT   POINT TO ENHANCED BASIC S ADDITIONAL ERROR CODES  GET A CHARACTER FROM X AND SEND IT TO CONSOLE OUT  DO IT AGAIN   RE ENTER THE MAIN STREAM OF CODE   AC65    HI RES TEXT MODE ERROR   BRANCH IF NOT   SET UP THE PRINT PARAMETERS   SEND A     TO CONSOLE OUT   POINT TO ENHANCED BASIC S ADDITIONAL ERROR CODES  GO PRINT THE ERROR CODE POINTED TO BY X   JUMP TO THE ERROR SERVICING ROUTINE   AC49    SAVE THE ERROR NUMBER    SUPER EXTENDED BASIC UNRAVELLED II    1057  1058  1059  1060  1061  1062  1063  1064  1065  1066  1067  1068  1069  1070  1071  1072  1073  1074  1075  1076  1077  1078  1079  1080  1081  1082  1083  1084  1085  1086  1087  1088  1089  1090  1091  1092  1093  1094  1095  1096  1097  1098  1099  1100  1101  1102  1103  1104  1105  1106  1107  1108  1109  1110  1111  1112  1113  1114  1115  1116  1117  1118  1119  1120  1121  1122  1123  1124  1125  1126  1127  1128  1129  1130  1131  1132  1133  1134  1135  1136  1137  1138  1139  1140  1141  1142  1143  1144  1145  1146  1147  1148  1149  1150  1151  1152      4  6  E4B8  E4BA  E4BD  E4BF    4  1  E4C3    4
209. RST ENHANCED FUNCTION TABLE  POINT U TO BE ABLE TO SEARCH FOR AN ENHANCED FUNCTION TOKEN      BASIC 2 0 COMMAND PROCESSING ROUTINE ENTRY POINT PATCH ENTERED FROM  8150    TOKEN NUMBER OF FIRST ENHANCED BASIC COMMAND  BRANCH IF LESS THAN ENHANCED TOKEN   COMPARE TO THE HIGHEST ENHANCED BASIC TOKEN   BRANCH IF ENHANCED BASIC TOKEN   GO TO DISK BASIC S COMMAND HANDLER   SUBTRACT OUT THE NON ENHANCED BASIC TOKENS   POINT X TO ENHANCED BASIC S COMMAND DISPATCH TABLE  RE ENTER THE MAIN STREAM CODE      BASIC 2 0 FUNCTION PROCESSING ROUTINE PATCH ENTERED FROM  816C    SELTASK1 ORCC 44560   STD 40   PULS A B   STD V42   STS V44   LDB 4801   STB INIT1   LDS     4TMPSTACK   LDD V44   PSHS         LDD     V42   PSHS         LDD 40   RTS    CRUNCH A TOKEN PATCH ENTERED FROM 58804  ALINK2 TST          BNE     152   LDA     V42   CMPA 4962   BLS     LE148   LDU     4COMVEC 5   JMP 18807  LE148 10   4562   LDU     158  LE14D STA  V42   JMP LB89D  LE152 10   V42   CMPA   29   BLS LE15B  LE158 JMP LB9D7        10   4529  LE15D 100  LE15D   BRA     LE14D    BASIC 2 0 COMMAND INTERPRETATION VECTOR TABLE  EBCOMTAB FCB 23  LE163 FDB   0  01  20  LE165 FDB  ALINKA  LE167  FCB 5  LE168 FDB FUNDIC20  LE16A FDB ALINK5  LE16C FCB  00 500 500 500 500 500    UNCRUNCH A TOKEN PATCH ENTERED FROM  B7F3  ALINK3 LEAU 10 0   TST  U   LBNE LD67F   LEAX   01      LDA  X    ANDA   7F   CMPA 4562   BCS 1  18     SUBA   62   LDU      LE158   BRA     ALINK3  LE18B SUBA 4529   LDU     4LEI5D   BRA     ALINK3  ALINK4
210. S    BSR  LDA  ANDA  STA  RTS    BSR  LDA  ORA    LEEC7   U  X     LEEC7   U    X    LEEC7   U        X     APPENDIX B  DISASSEMBLY OF SUPER EXTENDED BASIC 1 1    B26    ORIGIN SPECTRAL ASSOC  REVISED 12 26 1999 WALTER K ZYDHEK    HSCREEN 3     ROUND OFF MASK FOR HSCREEN 1 OR 4  FOUR PIXELS PER BYTE   HSCREEN 2    NO IT S HSCREEN 1 OR 4   ROUND OFF MASK FOR HSCREEN 2  TWO PIXELS PER BYTE    SAVE MASK IN BOTH ACCA AND ACCB   ROUND OFF HORIZONTAL START COORDINATE   SAVE NEW START COORDINATE   ROUND OFF HORIZONTAL END COORDINATE   SAVE NEW END COORDINATE   CALCULATE THE DIFFERENCE BETWEEN THE HORIZONTAL START AND END  SAVE THE HORIZONTAL DIFFERENCE   CALCULATE THE DIFFERENCE BETWEEN THE VERTICAL START AND END  ADD ONE TO THE VERTICAL DIFFERENCE  INCLUSIVE START AND END   SAVE THE VERTICAL DIFFERENCE    INTO A BYTE DIFFERENCE   GET THE HI RES GRAPHICS MODE   HSCREEN 2    YES  DIVIDE PIXEL COUNT BY TWO  TWO PIXELS PER BYTE    HSCREEN 3    NO  DIVIDE PIXEL COUNT BY FOUR  FOUR PIXELS PER BYTE      HSCREEN 3  DIVIDE PIXEL COUNT BY EIGHT  EIGHT PIXELS PER BYTE   DIVIDE THE HORIZONTAL DIFFERENCE BY 2    DIVIDE THE HORIZONTAL DIFFERENCE BY 2  DIVIDE THE HORIZONTAL DIFFERENCE BY 2    ADD ONE TO THE HORIZONTAL DIFFERENCE  INCLUSIVE START AND END   SAVE THE HORIZONTAL DIFFERENCE   POINT X TO THE FIRST BYTE TO MOVE   POINT Y TO THE ACTION ADDRESS   GET THE LS BYTE OF HORIZONTAL DIFFERENCE   SAVE THE MOVEMENT POINTER   PERFORM THE APPROPRIATE MOVEMENT ACTION  DECREMENT THE HORIZONTAL MOVEMEN
211. S INPUT ON          SIDE A  AQ3C LDA   F8    AQ3E STA  2 X    BITS 8 2 ARE INPUTS  BITS 3 7 ARE OUTPUTS ON B SIDE  A040 STB 1      ENABLE PERIPHERAL REGISTERS  DISABLE PIA1 MPU  A042 STB   35X   INTERRUPTS AND SET CA2  CB2 AS OUTPUTS  A044 CER 2 X SET 6847 MODE TO ALPHA NUMERIC    046 LDA  2    AG48 STA       MAKE RS232 OUTPUT MARKING           LDA   FF34      4   LDX  PIAG POINT X TO           AQAF CLR 1    CLEAR PIA   CONTROL REGISTER     A051 CER 3 X CLEAR PIA   CONTROL REGISTER B  A053 CLR    5 SET PIA   SIDE A TO INPUT  A055 STA 2 X   SET PIA   SIDE B TO OUTPUT                I1    SUPER EXTENDED BASIC UNRAVELLED II APPENDIX I ORIGIN SPECTRAL ASSOC                BASIC 1 2 EXTENDED 1 1 vs COLOR EXTENDED 2 0 DIFFERENCES REVISED 12 26 1999 WALTER K ZYDHEK  A057 STB           ENABLE PIA   PERIPHERAL REGISTERS  DISABLE           A059 STB 3 X   MPU INTERRUPTS  SET CA2  CA1 TO OUTPUTS      5          LAQ72     THE MANUAL ROM CARTRIDGE START  EXEC  amp HE010  JUMPS HERE  A05E JSR LBC2E SET UP THE SYSTEM FOR A ROM CARTRIDGE  AG61 JMP ROMPAK JUMP TO THE ROM PAK  A084 LA084 LDX   7FFF FORCE THE TOP OF RAM TO BE  7FFF  A087 BRA LA093  A089 NOP THESE 10 NOPs ARE JUST SPACE FILLERS           NOP  AG8B NOP      8               80                  NOP  A08F NOP  A090 NOP  A091 NOP  A092 NOP           JMP EXBAS 2 JUMP TO EXTENDED BASIC                      PSHS          200 TST                CHECK FOR HI RES TEXT MODE    202 LBNE  F77E BRANCH IF A HI RES TEXT MODE IS ENABLED  ALINK24  
212. S MORE ROMS ARE ADDED TO THE   SYSTEM BY EFFECTIVELY ALLOWING MORE CODE TO BE ADDED TO THE  ROUTINES IN EARLIER ROMS  THIS NEW CODE IS LOCATED IN THE NEW ROMS  AND THE ADDRESS TO GET TO THE NEW CODE IS IN BYTES 1  amp  2 OF THE  RAM VECTOR  BYTE    WILL CONTAIN A  7E WHICH IS THE FIRST BYTE OF  THE JMP INSTRUCTION    THE FIRST ADDRESS IN THIS TABLE IS THE ADDRESS IN BASIC WHICH  CALLS THE RAM VECTOR  THE SECOND ADDRESS IS THE VALUE WHICH   EX BASIC PUTS IN THE RAM VECTOR  IF ANY  AND THE THIRD ADDRESS   IS THE VALUE WHICH DISK BASIC PUTS THERE  IF ANY          Ok OR Ok OR OR X   ko   Xx            2 0 2 1 1 6 1 1   RVECG RMB 3  A5F6  C426  C44B OPEN COMMAND   RVECI RMB 3  A5B9  C838  C888 DEVICE NUMBER VALIDITY CHECK  RVEC2 RMB 3  A35F  C843  C893 SET PRINT PARAMETERS   RVEC3 RMB 3  A282  8273  CB4A  CC1C CONSOLE OUT   RVEC4 RMB 3  A176  8CF1  C58F  C5BC CONSOLE IN   RVEC5 RMB 3  A3ED  C818  C848 INPUT DEVICE NUMBER CHECK  RVEC6 RMB 3  A406  C81B  C84B PRINT DEVICE NUMBER CHECK  RVEC7 RMB 3  4426  CA3B        9 CLOSE ALL FILES   RVEC8 RMB 3  A42D  8286  CA4B  CAF9 CLOSE ONE FILE   RVEC9 RMB 3  B918  8E90  8E90  8E90 PRINT   RVEC1   RMB 3 98061  CC5B  CD35 INPUT   RVEC11 RMB 3  4549  C859  C8A9 BREAK CHECK   RVEC12 RMB 3  A390  C6B7  C6E4 INPUTTING A BASIC LINE   RVEC13 RMB 3  A4BF  CA36  CAE4 TERMINATING BASIC LINE INPUT  RVEC14 RMB 3  A5CE  CA6    C9  C EOF COMMAND   RVEC15 RMB 3  B223  8846  CDF6  CED2 EVALUATE AN EXPRESSION   RVEC16 RMB 3  AC46  C6B7  C6E4 RESERVED FOR ON 
213. S THE ACTIVE TASK REGISTER  RTS  LE6EF LDB 398632  HR  ERROR  JMP LAC46 JUMP TO THE ERROR HANDLER    HCOLOR  HCOLOR CMPA      CHECK FOR COMMA  FIRST ARGUMENT NOT GIVEN  LBRN RAMLINK RAM HOOK  BEQ LE7 5 BRANCH IF FIRST ARGUMENT NOT GIVEN  BSR LE7 E EVALUATE EXPRESSION  SYNTAX CHECK FOR EXPRESSION  gt  16  STB H FCOLOR SAVE THE NEW FORGROUND COLOR  JSR             GET BASIC S CURRENT INPUT CHARACTER  BEQ LE7 D BRANCH IF END OF LINE  NO BACKGROUND COLOR GIVEN  LE7 5 JSR   SYNCOMMA DO A SYNTAX CHECK FOR A COMMA  BSR LE7 E EVALUATE EXPRESSION  SYNTAX CHECK FOR EXPRESSION  gt  16  STB H BCOLOR SAVE THE NEW BACKGROUND COLOR  LE7 D RTS  LE7 E JSR EVALEXPB EVALUATE EXPRESSION  RETURN VALUE IN ACCB  LE711 CMPB  16 MAXIMUM OF 16 DIFFERENT COLORS  LBCC  ILLFUNC ILLEGAL FUNCTION CALL ERROR  RTS  LE718 JSR LE731 SET THE WORKING COLOR AND ALL PIXEL BYTES TO DEFAULT VALUES  JSR   GETCCH GET BASIC S CURRENT INPUT CHARACTER  BEQ LE72F BRANCH IF END OF LINE  CMPA      SYNTAX CHECK FOR     BEQ LE72F EXIT IF      JSR 5               DO A SYNTAX CHECK FOR A COMMA  CMPA      SYNTAX CHECK FOR A COMMA  BEQ LE72F USE DEFAULT COLORS IF TWO COMMAS  JSR LE7 E EVALUATE COLOR ARGUMENT  BSR LE73B SET THE WORKING AND ALL COLOR BYTES TO THE COLOR ARGUMENT    LE72F JMP GETCCH GET BASIC S CURRENT INPUT CHARACTER AND RETURN    LE731 LDB H FCOLOR GET THE FOREGOUND COLOR    TST SETFLG TEST THE HSET HRESET FLAG  BNE LE73B BRANCH IF HSET  LDB H BCOLOR GET THE BACKGROUND COLOR IF HRESET  LE73B STB WCOLOR SAVE THE NEW
214. SEMBLY OF SUPER EXTENDED BASIC 1 1 REVISED 12 26 1999 WALTER K ZYDHEK    LSRA  RORB DIVIDE OFFSET BY 2  LDX VD1 GET H W RATIO  JSR LEBCB MULT VERTICAL OFFSET BY H W RATIO  TFR Y D TRANSFER PRODUCT TO ACCD  TSTA CHECK OVERFLOW AND GET MS BYTE RESULT            ILLFUNC ILLEGAL FUNCTION CALL ERROR  RESULT    255   STB VEREND SAVE DELTA VERTICAL MS BYTE  TFR U D LS BYTE RESULT TO ACCA  STA VEREND 1 SAVE DELTA VERTICAL LS BYTE  LDA 39 GET OCTANT NUMBER  CMPA 4902 CHECK FOR OCTANT 2 1 6 7  BCS LEB13 BRANCH IF SUBARC HORIZONTAL END POINT  gt   HORIZONTAL CENTER  CMPA 8506 MORE CHECKS FOR OCTANT 0 1 6 7  BCC LEB13 BRANCH IF SUBARC HORIZONTAL END POINT  gt   HORIZONTAL CENTER  LDD VCB GET HORIZONTAL COORD OF CENTER  SUBD HOREND SUBTRACT HORIZONTAL DIFFERENCE  BCC LEB28 BRANCH IF NO UNDERFLOW  CLRA  CLRB FORCE COORD TO 0 IF RESULT WAS LESS THAN 0  BRA       20 SAVE NEW COORD  LEB13 LDD VCB GET HORIZONTAL COORD OF CENTER  ADDD HOREND ADD HORIZONTAL DIFFERENCE  BCS LEBIE BRANCH IF OVERFLOW  CMPD VD3 COMPARE TO MAX HORIZONTAL COORDINATE  BCS LEB28 BRANCH IF  lt  MAX HOR  LEBIE LDD        GET MAX HORIZONTAL COORD  LEB28 STD HOREND SAVE NEW HORIZONTAL SUBARC END COORD  LDA y gt  GET OCTANT NUMBER  CMPA   04 CHECK FOR OCTANT 0 1 2 OR 3  BCS LEB32 BRANCH IF SUBARC VERTICAL END POINT  gt   VERTICAL CENTER  LDD VCD GET VERTICAL COORD OF CENTER  SUBD VEREND SUBTRACT VERTICAL DIFFERENCE  BCC LEB3F BRANCH IF NO UNDERFLOW  CLRA  CLRB FORCE NEW VERTICAL TO 6 IF MINUS  BRA LEB3F SAVE NEW COORD  LEB32
215. SET  PSET FLAG   OP CODE FOR LDA 4  EFFECTIVELY SKIP NEXT INSTRUCTION  PRESET FLAG   SAVE PSET PRESET FLAG   GET NEXT CHARACTER FROM BASIC S INPUT LINE  NORMALIZE START END COORDS   GET PSET PRESET FLAG   SAVE IT   SET ACTIVE COLOR BYTE   GET BASIC S CURRENT INPUT CHARACTER  BRANCH IF NO BOX TO BE DRAWN   DO A SYNTAX CHECK FOR A COMMA   DRAW A BOX    GO DO A SYNTAX CHECK FOR A        FOUND A  B  AND SOMETHING FOLLOWS  DRAW A HORIZONTAL LINE   DRAW A VERTICAL LINE   GET HORIZONTAL START COORD   SAVE IT ON THE STACK   GET HORIZONTAL END COORDINATE   PUT IN HORIZONTAL START COORDINATE  DRAW A VERTICAL LINE   GET THE PREVIOUS HORIZONTAL START COORDINATE  RESTORE IT   GET VERTICAL END COORDINATE   PUT INTO START COORD   DRAW A HORIZONTAL LINE    SUPER EXTENDED BASIC UNRAVELLED II    1633  1634  1635  1636  1637  1638  1639  1640  1641  1642  1643  1644  1645  1646  1647  1648  1649  1650  1651  1652  1653  1654  1655  1656  1657  1658  1659  1660  1661  1662  1663  1664  1665  1666  1667  1668  1669  1670  1671  1672  1673  1674  1675  1676  1677  1678  1679  1680  1681  1682  1683  1684  1685  1686  1687  1688  1689  1690  1691  1692  1693  1694  1695  1696  1697  1698  1699  1700  1701  1702  1703  1704  1705  1706  1707  1708  1709  1710  1711  1712  1713  1714  1715  1716  1717  1718  1719  1720  1721  1722  1723  1724  1725  1726  1727  1728    E8EB  E8ED  E8F    E8F2  E8F4    E8F6  E8F9  E8FB  E8FD  E8FF  E901  E903  E905    E906  E908    9        900  E9QF  E911  E913  E915
216. SR    B S                       2000 14   LED4E   B S   HTMPSTACK 2    5        5    LAC44    THE HBUFF COMMAND WILL RESERVE SPACE IN THE HPUT HGET BUFFER  IN THE BUFFER FOR THE REQUESTED BUFFER SIZE AND A FIVE BYTE HEADER  HEADER WHICH IS DESCRIBED AS FOLLOWS   BYTES   1  ADDRESS OF THE NEXT HPUT HGET BUFFER IN THE BUFFER SPACE  NO MORE BUFFERS IN THE BUFFER SPACE  BUFFERS ALLOCATED AND THE ENTIRE BUFFER SPACE IS FREE  BYTE 2  BUFFER NUMBER  BYTES 3 4  SIZE OF THE BUFFER    LB73D  RAMLINK   255  ILLFUNC  VD1  LED72  SYNCOMMA  LB73D          LE CB  SELTASK1  VD1    LED85  HSFFFF  HRESBUFF  LEDBD  HHRESBUFF  zY   HSFFFF  LED95  LEDC4    B24    MOVE THE STACK POINTER DOWN ACCB BYTES   COMPARE TO THE BOTTOM OF THE STACK AREA   THE 14 EXTRA BYTES ARE  GENERATED BY THE FACT THAT THE SEVEN INTERRUPT VECTORS ARE GOTTEN FROM  THE ROM BY THE GIME CHIP  THE 14 BYTES IN RAM ARE UNUSED BY BASIC    OM  ERROR IF PAST THE BOTTOM   MAKE ACCB POSITIVE AGAIN   PUT THE STACK POINTER BACK WHERE IT BELONGS    PUT THE STACK POINTER AT THE TOP OF THE TEMPORARY STACK BUFFER    ENABLE TASK REGISTER 0  GO DO AN  OM  ERROR    THERE MUST BE ENOUGH FREE RAM  EACH BUFFER HAS A FIVE BYTE    IF ZERO  THERE ARE    IF  FFFF  THEN THERE ARE NO    EVALUATE BUFFER NUMBER ARGUMENT  RETURN VALUE IN X  RAM HOOK   MAXIMUM OF 255 BUFFERS ALLOWED   ILLEGAL FUNCTION CALL ERROR IF BUFFER NUMBER    255  SAVE THE BUFFER NUMBER   DON T GET THE SIZE OF THE BUFFER IF BUFFER 0 SELECTED  DO A SYNTAX CHECK FOR A COMMA   EVALUAT
217. STORE CARRY FLAG  2945 F413 24 02 BCC LF417 BRANCH IF NEXT COMMAND IS ALPHA  2946 F415 8D A6 BSR LF3BD EVALUATE DECIMAL COMMAND LINE VALUE   RETURN VALUE IN ACCD  amp  VD3  2947 F417 35 02 LF417 PULS A GET CURRENT COMMAND BACK  2948 F419 81 43 CMPA   C  CHANGE COLOR   2949 F41B 27 28 BEQ LF445 BRANCH IF YES  2950 F41D 81 41 CMPA   A  CHANGE ANGLE   2951 F41F 27 30 BEQ LF451 BRANCH IF YES  2952 F421 81 53 CMPA   S  CHANGE SCALE   2953 F423 27 37 BEQ LF45C BRANCH IF YES  2954 F425 81 55 CMPA   U  GO UP   2955 F427 27 6D BEQ LF496 BRANCH IF YES  2956 F429 81 44 CMPA   D  GO DOWN   2957 F42B 27 65 BEQ LF492 BRANCH IF YES  2958 F42D 81 4C CMPA   L  GO LEFT   2959 F42F 27 5B BEQ LF48C BRANCH IF YES  2968 F431 81 52 CMPA   R  GO RIGHT   2961 F433 27 50 BEQ LF485 BRANCH IF YES  2962 F435 88 45 SUBA   E  MASK OFF ASCII FOR LETTER E H COMMAND CHECKS  2963 F437 27 3A BEQ LF473 BRANCH IF E  45 DEGREES   2964 F439      DECA CHECK FOR F  2965 F43A 27 31 BEQ LF46D BRANCH IF F  135 DEGREES   2966 F43C 4A DECA CHECK FOR G  2967 F43D 27 3E BEQ LF47D BRANCH IF G  225 DEGREES   2968 F43F      DECA CHECK FOR H  2969 F449 27 25 BEQ LF467 BRANCH IF H  315 DEGREES   2970 F442 7E B4 4A JMP ILLFUNC ILLEGAL FUNCTION CALL ERROR IF ILLEGAL SUBCOMMAND  2971  2972   CHANGE COLOR  2973   445 BD E7 11 LF445 JSR LE711 ADJUST COLOR CODE FOR PROPER GRAPHICS MODE  2974 F448 F7 FE BA STB H FCOLOR SAVE NEW FOREGROUND COLOR  2975   44   BD E7 31 JSR LE731 SET UP COLOR BYTES    2976          16 FF 7E LBRA LF3CF GO P
218. SUPER EXTENDED  BASIC UNRAVELLED       LEAX TABLE  Pcp       LO  4   LEAX 8     0  LDY 580 DA   d  FOR THE TANDY  TRS 80    COLOR COMPUTER 3    TABLE OF CONTENTS    FOREWORD 1  INTRODUCTION 3  COLOR COMPUTER 3 HARDWARE DIFFERENCES 6  MEMORY MANAGEMENT 19  SUPER HIGH RESOLUTION GRAPHICS 13  COLORS AND PALETTES 23  INTERRUPTS 27  SUPER EXTENDED BASIC 30  APPENDICES  MEMORY MAP    DISASSEMBLY OF SUPER EXTENDED BASIC 2 0    SUPER EXTENDED BASIC SYMBOL TABLE    CHIP CONTROL REGISTERS    COLOR COMPUTER 3 COLORS    SUPER EXTENDED BASIC S DATA ASCII TABLES    ROM ROUTINES    SUPER EXTENDED BASIC ROUTINE ENTRY POINTS    BASIC 1 2 EXT  BASIC 1 1 VS COLOR EXT  2 0 DIFFERENCES    CHARACTER SETS    SUPER EXTENDED BASIC UNRAVELLED II FOREWORD ORIGIN  SPECTRAL ASSOC  REVISED 12 26 99 WALTER K ZYDHEK    FOREWORD    Due to the many requests for the Unravelled Series produced by Spectral  Associates  and the fact that these books are rare and no longer in production  I  have taken it upon myself to reproduce them in electronic  PDF  Adobe Acrobat     format     I have re disassembled the ROMs listed in this book  and added all the  comments from the Original Extended Basic Unravelled Book  Some changes were made  to make the book a little easier to read           1  The comments have been cleaned up some  In cases where a comments continued  onto the next line  a   is placed in the Labels column  as well as a   at  the beginning of each line of the comment  In cases where the previous  comment
219. T COUNTER   LOOP UNTIL ALL BYTES ON THIS ROW MOVED   RESTORE THE MOVEMENT POINTER   MOVE THE MOVEMENT POINTER DOWN ONE ROW  DECREMENT THE VERTICAL DIFFERENCE  ROW COUNTER   LOOP UNTIL ALL ROWS MOVED   SELECT TASK REGISTER    AS THE ACTIVE TASK   SET UP THE MMU REGISTERS   WHY NOT MAKE THE JSR ABOVE A JMP    GET A BBYTE FROM THE HI RES SCREEN  POINT U TO PROPER BUFFER LOCATION  SAVE THE BYTE IN THE BUFFER    GET THE BUFFER POINTER   BUMP IT UP BY ONE   SAVE IT   COMPARE THE NEW POINTER TO THE END OF THE BUFFER SPACE   FC  FUNCTION CALL ERROR IF PAST THE END OF THE BUFFER    RESET THE TEMPORARY STACK POINTER   SELECT TASK REGISTER    AS THE ACTIVE TASK  SET UP THE MMU REGISTERS   ILLEGAL FUNCTION CALL ERROR    ADDRESS OF PSET ACTION ROUTINE  TOKEN FOR PSET   ADDRESS OF PRESET ACTION ROUTINE  TOKEN FOR PRESET   ADDRESS OF OR ACTION ROUTINE  TOKEN FOR OR   ADDRESS OF AND ACTION ROUTINE  TOKEN FOR AND   ADDRESS OF NOT ACTION ROUTINE  TOKEN FOR NOT    POINT U TO THE PROPER BUFFER LOCATION  GET A BYTE FROM THE BUFFER  PUT IT BACK ON THE SCREEN    POINT U TO THE PROPER BUFFER LOCATION  GET A BYTE FROM THE BUFFER    PUT IT BACK ON THE SCREEN    POINT U TO THE PROPER BUFFER LOCATION  GET A BYTE FROM THE BUFFER    AND  IT WITH THE SCREEN DATA   PUT IT BACK ON THE SCREEN    POINT U TO THE PROPER BUFFER LOCATION  GET A BYTE FROM THE BUFFER   OR  IT WITH THE SCREEN DATA    SUPER EXTENDED BASIC UNRAVELLED II    2497  2498  2499  2500  2501  2502  2503  2504  2505  2506  2507  2508  2509  25
220. THE LOGICAL ADDRESS SPACE  GET THE CURRENT CURSOR POINTER   GET THE CURSOR CHARACTER ATTRIBUTES   AND SAVE THEM   GET THE CURRENT COLUMN AND ROW NUMBER   AND SAVE THEM   RESTORE THE NORMAL BASIC PROGRAM BLOCK TO LOGICAL BLOCK 1  EVALUATE A VARIABLE  RETURN X POINTING TO THE VARIABLE DESCRIPTOR  SAVE THE VARIABLE DESCRIPTOR   SYNTAX CHECK FOR A COMMA    RESERVE SPACE FOR A ONE CHARACTER STRING IN STRING SPACE   GET THE CURSOR CHARACTER   THIS IS REALLY A WASTE   THE JSR LB56D ABOVE SHOULD JUST BE A  JSR LB58D AND THE JSR LB511 WOULD NOT BE NECESSARY   SAVE THE CURSOR CHARACTER IN THE NEWLY RESERVED STRING SPACE   PUT THE STRING ONTO THE STRING STACK   POINT TO THE STRING S VARIABLE DESCRIPTOR   CHECK THE SECOND CHARACTER OF THE VARIABLE NAME   TYPE MISMATCH ERROR IF NUMERIC VARIABLE   POINT Y TO THE START OF THE STRING DESCRIPTOR   VARIABLE DESCRIPTORS ARE 5 BYTES LONG     COPY THE DATA FROM THE STRING DESCRIPTOR     TO THE VARIABLE DESCRIPTOR   DECREMENT THE DESCRIPTOR COUNTER   LOOP UNTIL DONE     THIS CODE IS DESIGNED TO REMOVE THE ABOVE ALLOCATED STRING FROM    THE STRING STACK   IT MAY CAUSE BUGS BECAUSE IT DOESN T RESET     LASTPT  LDX LASTPT  JSR LB675 WOULD BE MUCH BETTER   EVALUATE A VARIABLE  RETURN X POINTING TO THE VARIABLE DESCRIPTOR  SAVE THE VARIABLE DESCRIPTOR   SYNTAX CHECK FOR A COMMA   ZERO OUT THE MS BYTE OF ACCD   GET THE CURSOR ATTRIBUTES   CONVERT ACCD TO FLOATING POINT   POINT X TO THE VARIABLE DESCRIPTOR   CHECK THE SECOND CHARACTER OF THE VARIABLE NAM
221. THE LOOKUP TABLE HAS TWO BYTES ENTRY  POINT TO THE CHARACTER PRINT ROUTINE ADDRESS TABLE  GET THE ADDRESS OF THE CHARACTER PRINT ROUTINE  AND SAVE IT IN VD1    THE HI RES SCREEN   8 ROWS PER HI RES CHARACTER   TEMP SAVE THE ROW COUNTER   POINT TO THE PRINT BUFFER   POINT TO THE HI RES CHARACTER GENERATOR           GET THE FOREGROUND COLOR   FILL ACCB WITH ALL FOREGROUND COLOR PIXELS  SAVE THE PIXEL FILLED BYTE   SWITCH IN TASK REGISTER 1   GET THE CHARACTER COUNT    GET A CHARACTER FROM THE PRINT BUFFER  CLEAR THE MOST SIGNIFICANT BYTE OF ACCD    SUPER EXTENDED BASIC UNRAVELLED II    2593  2594  2595  2596  2597  2598  2599  2600  2601  2602  2603  2604  2605  2606  2607  2608  2609  2610  2611  2612  2613  2614  2615  2616  2617  2618  2619  2620  2621  2622  2623  2624  2625  2626  2627  2628  2629  2630  2631  2632  2633  2634  2635  2636  2637  2638  2639  2640  2641  2642  2643  2644  2645  2646  2647  2648  2649  2650  2651  2652  2653  2654  2655  2656  2657  2658  2659  2660  2661  2662  2663  2664  2665  2666  2667  2668  2669  2670  2671  2672  2673  2674  2675  2676  2677  2678  2679  2680  2681  2682  2683  2684  2685  2686  2687  2688    EFDE  EFDF  EFE  EFE1  EFE2  EFE3  EFE5  EFE9  EFEC  EFEE  EFF    EFF2  EFF4  EFF7  EFF9  EFFC  EFFE  F001    F002  F004  F006  F008    FOBA  F00C  F00D  FOOF  F011  F013  F015  F017  F019    FO1A  Fg1C  F628  F022  F023  F024  F025  F026  F028  F02B  F02D  FO2F  F032  F034    F035  F03B  F041    F045  F047  F04B  F04C  F04D  FO4
222. Thanks Jean Francois for  reminding me of the name      I had a couple of close friends that helped me explore the world of CoCo and  by this time  I knew that my CoCo would be my friend forever  I give special thanks  to Steve Cohn  who helped me get started with ADOS  Two other people whose names I  can t remember were very beneficial to my mastering of the CoCo        Shortly after getting my CoCo 3  I started BBS ing  Wow  a whole new world   My knowledge just kept growing     SUPER EXTENDED BASIC UNRAVELLED II FOREWORD ORIGIN  SPECTRAL ASSOC  REVISED 12 26 99 WALTER K ZYDHEK    A few years later  I moved to Oregon  then to Phoenix  Arizona to attend  school  I studied Electronics Technology at Phoenix Institute of Technology  In the  second year  we studied Micro processor Theory  For our labs  we just happen to use  the Tandy Color Computer 3  for studying 6809 Processors   I had it made  In this  class I added an EPROM programmer reader to my list of hardware  My favorite  instructor  Gary Angle  amp  I spent many hours sharing information on the CoCo  At one  time  we shared a joint project to disassemble ROMs from industrial machinery   which used the 6809 Processor  Using the CoCo to read the ROMs to work with     I even had a BBS running under 0S 9 at one time  RiBBS I think it was  Very  similar to QuickBBS and RemoteAccess BBS for the PC     In 1991  I finally converted over to PC  but never forgetting my CoCo  About  5 years ago  My CoCo and all related material
223. The  colors are  again  specified using 6 bit  The bottom 4 bits determine the base  color  and the top 2 bits determine the intensity of the base color  Figure 10  shows the base colors     Bit Pattern Base Color  0000 Black Mhite    23    SUPER EXTENDED BASIC UNRAVELLED II COLORS AND PALETTES ORIGIN  SPECTRAL ASSOC  REVISED 12 26 99 WALTER K ZYDHEK    0001 Blue   0010 Green   0011 Cyan   0100 Red   0101 Magenta  0110 Brown   0111 Blue Green  1000 Sky  Blue  1001 Peacock  1010 Cyan Green  1011 Red Magenta  1100 Red Orange  1101 Orange   1119 Yellow Green  1111 Blue Purple    Figure 18   Composite Base Colors    Composite intensity values range from 0 3  and occupy bits 4 and 5 of the  color value  For example   04 sets the color dark red   14 is red   24 is medium  red  and  34 is bright red  See appendix D for a complete list of available colors     Palettes   Colors in the original Color Computers were determined by storing a specific  pattern of bits  pixel  within the screen memory  This pixel corresponded to a  specific color  In the Color Computer 3  the pixel now corresponds to a palette    or color register  see Figure 12   When it is time to display the screen  the  computer determines the palette number of a pixel  and then looks inside the  palette register to get the color to display  The palette registers are located  from  FFB     FFBF and are read write registers  but the top two bits must be  masked off after a read operation since only six bits contain valid
224. UTINE   OP CODE OF A NOP   REPLACE THE BRANCH TO THIS ROUTINE WITH 2 NOPs MAKING IT SO  THAT THIS ROUTINE MAY ONLY BE ENTERED ONE TIME   POINT TO THE AUTHORS CODED NAMES      REPLACE THE AUTHORS  NAMES AND THE CODE THAT DISPLAYS THEM WITH NOPs    LF74D STA    X    B35    SAVE A NOP    SUPER EXTENDED BASIC UNRAVELLED II    3361  3362  3363  3364  3365  3366  3367  3368  3369  3378  3371  3372  3373  3374  3375  3376  3377  3378  3379  3380  3381  3382  3383  3384  3385  3386  3387  3388  3389  33968  3391  3392  3393  3394  3395  3396  3397  3398  3399  3400  3401  3402  3403  3404  3405  3406  3407  3408  3409  3410  3411  3412  3413  3414  3415  3416  3417  3418  3419  3420  3421  3422  3423  3424  3425  3426  3427  3428  3429  3430  3431  3432  3433  3434  3435  3436  3437  3438  3439  3440  3441  3442  3443  3444  3445  3446  3447  3448  3449  3450  3451  3452  3453  3454  3455  3456      7        752  F754  F756    F757  F759  F75B  F75E  F761  F764    F766  F768  F76C  F76E  F770    F772  F774  F777  F778  F77B  F77D    F77E  F788  F783  F785  F787  F789  F78B  F78D  F78F  F791  F794  F796  F798  F79A  F79D  F79F  F7A2  F7A4  F7A6  F7A8  F7AB    F7AE    7  0  F7B4  F7B7  F7B9    F7BB  F7BE    7      F7C2  F7C4  F7C6  F7C8  F7CA  F7CC  F7CE    700  F7D3  F7D5  F7D7  F7DA  F7DC  F7DE    7        F7E2    7  4    7  6  F7E9  F7EB  F7ED  F7EF  F7F1  F7F4  F7F7  F7F8  F7FA  F7FB  F7FE  F801  F802  F805  F807  F809    8C  25  35  39    00  26  BD  7E  17  20    34  31  A7  A7  
225. VIDEO MODE REGISTERS   RESTORE REGISTERS   RE ENTER THE MAIN STREAM OF CODE   A3C6     BREAK KEY DEPRESSED     YES  RE ENTER THE MAIN STREAM OF CODE   ADF4    BREAK  FLAG    SAVE IN THE ERROR BREAK FLAG   DIRECT MODE     FF SIGNIFIES DIRECT MODE   BRANCH IF DIRECT MODE   HAS AN ON BRK TRAP BEEN SET UP    YES   CHECK THE HI RES GRAPHICS MODE   BRANCH IF COCO COMPATIBLE   PROGRAM THE VIDEO DISPLAY REGISTERS   JUMP TO THE STOP COMMAND       09    SAVE THE SEARCH LINE NUMBER   CHECK THE ERROR BREAK FLAG   BRANCH IF BREAK   IF ERROR  RESET THE STACK POINTER     GET THE ADDRESS   ADC4  OF THE MAIN COMMAND INTERPRETATION    LOOP AND SAVE IT AS THE NEW RETURN ADDRESS  MOVE THE INPUT POINTER TO THE END OF THE LINE  SKIP TO THE START OF THE NEXT LINE   GET THE LINE NUMBER WE RE LOOKING FOR   COMPARE TO THE CURRENT LINE NUMBER   BRANCH IF SEARCH LINE NUMBER GREATER THAN CURRENT LINE NUMBER  POINT X TO THE BEGINNING OF THE PROGRAM   SEARCH FOR THE PROGRAM LINE NUMBER IN ACCD  BRANCH IF LINE NUMBER NOT FOUND   RESET BASIC S INPUT POINTER AND RETURN   AEBB       ERROR SERVICING ROUTINE PATCH ENTERED FROM  AC46    ALINK20 CLR H ERRBRK  LDA CURLIN  INCA  BEQ LE47D  LDX H ONERR  BNE LE4B3  LE47D PSHS A  LDA HRMODE  PULS A  BEQ LE488  JSR 5              LE488 CMPB 49832  BNE LE49F  JSR LB95C  JSR LB9AF  LEAX  BAS2QERR        LE496 JSR LACAQ  JSR LACAQ  JMP LAC65  LE49F CMPB  39 2  BNE LE4B    JSR LB95C  JSR LB9AF  LEAX LE4CE PC  JMP LE496  LE4B0 JMP LAC49  LE4B3 STB H ERROR    B11    SET THE E
226. Vector   FFF2 SWI3  100  FEEE   FFFA SWI2  103  FEF1   FFF6 FIRQ  10F  FEFA   FEF8 IRQ  10C  FEF7   FFFA SWI  106  FEFA   FFFC NMI  109  FEFD   FFFE RESET  A027  8C1B    Figure 15   Interrupt Vectors    When an interrupt such as IRQ interrupt occurs  control is transferred to the    interrupt vector table   FFF   FFFF  as shown in Figure 15  The  SAM chip in the older CoCos  redirect the CPU s address request   FFFF range to  BFF   BFFF so that the interrupt vectors can be  ROM  In the original Color Computer  control would then be sent  address was  and still is  a jump table which redirects control  routine  Since this jump table is in RAM  it may be modified by  Disk Basic  or any user program    In the Color Computer 3  there is no guarantee that Basic    GIME chip  and the  from the  FFF6   stored in the Basic  to  10C  At this   to the desired IRQ  Extended Basic     or the Basic jump    table is in memory  because of the MMU   For this reason  an intermediate jump  table was made in RAM in the  FEEE range  which can be forced to be in the logical  address space at all times  This jump table  when Basic is running  contains LBRAs  to the appropriate address in Basic s interrupt jump table   100   This also means  that when a user program wants to replace the memory at  100    111  it should deal  with the interrupts at the intermediate jump table at  FEEE  For example  if a user  program wishes to replace the IRQ vector  the following code could be used     ORCC   50 TU
227. X    A B X Y    A B X Y    A B X Y    A B X Y    ADDRESS                            E58E    BUTTON 13     E5BE                 E606    E634    CLRHIRES     E6D8     PIXELFIL    E742    E792    E7B2    Some of these routines may also change the MMU registers    DESCRIPTION    ENABLE HGET HPUT BUFFER   Put the HPUT HGET buffer  block  6 4  into the logical address space  Exit with  the MMU register images restored to  normal      PROGRAM MMU REGISTERS   Program the 16 MMU registers  with the 16 bytes pointed to by the X register     GET LONG ADDRESS   Convert FPAQ into a  long   512K   address  Return the block number of the address in  ACCB and the remaining 13 bits of the address in X     READ JOYSTICK BUTTON   Read the joystick button  specified in ACCB  8 3  and return the status in FPAQ     DISPLAY DEFAULT RGB COLORS   Copy Basic s default RGB  palette register colors into the palette registers     DISPLAY DEFAULT CMP COLORS   Copy Basic s default CMP  palette register colors into the palette registers     COPY PALETTE IMAGES   Copy the palette register color  RAM images into the palette registers     CLEAR THE HI RES GRAPHICS SCREEN   Clear the hi res  graphics screen to the palette register number in ACCB     FILL ACCB WITH PIXELS   Fill ACCB with pixels composed  of a specific palette register  Enter with ACCB Con   taining the palette register number used to fill ACCB     TURN ON A PIXEL   Turn on the pixel which is being  pointed to by the X register  screen address  
228. XPONENT  FPAS RMB 4  PV FLOATING POINT ACCUMULATOR  0 MANTISSA  FP SGN RMB  PV FLOATING POINT ACCUMULATOR     SIGN  COEFCT RMB POLYNOMIAL COEFFICIENT COUNTER  STRDES RMB 5 TEMPORARY STRING DESCRIPTOR  FPCARY RMB FLOATING POINT CARRY BYTE     FLOATING POINT ACCUMULATOR  1  FPIEXP RMB  PV FLOATING POINT ACCUMULATOR 41 EXPONENT        1 RMB 4  PV FLOATING POINT ACCUMULATOR 41 MANTISSA  FP1SGN RMB  PV FLOATING POINT ACCUMULATOR 41 SIGN  RESSGN RMB SIGN OF RESULT OF FLOATING POINT OPERATION  FPSBYT RMB FLOATING POINT SUB BYTE  FIFTH BYTE   COEFPT RMB 2 POLYNOMIAL COEFFICIENT POINTER  LSTTXT RMB 2 CURRENT LINE POINTER DURING LIST  CURLIN RMB 2  PV CURRENT LINE   OF BASIC PROGRAM   FFFF   DIRECT  DEVCFW RMB  TV TAB FIELD WIDTH  DEVLCF RMB  TV TAB ZONE  DEVPOS RMB  TV PRINT POSITION  DEVWID RMB  TV PRINT WIDTH  PRTDEV RMB  TV PRINT DEVICE  8 NOT CASSETTE   1 CASSETTE  DEVNUM RMB  PV DEVICE NUMBER   3 DLOAD   2 PRINTER   m  1 CASSETTE     5            1 15 DISK  CINBFL RMB  PV CONSOLE IN BUFFER FLAG  00   0   EMPTY   FF EMPTY  RSTFLG RMB  PV WARM START FLAG   55 WARM  OTHER COLD  RSTVEC RMB 2  PV WARM START VECTOR   JUMP ADDRESS FOR WARM START  TOPRAM RMB 2  PV TOP OF RAM   RMB 2 SPARE  UNUSED VARIABLES  FILSTA RMB  PV FILE STATUS FLAG    CLOSED  1 INPUT  2 OUTPUT  CINCTR RMB  PV CONSOLE IN BUFFER CHAR COUNTER  CINPTR RMB 2  PV CONSOLE IN BUFFER POINTER  BLKTYP RMB  TV CASS BLOCK TYPE     HEADER  1 DATA   FF EOF  BLKLEN RMB  TV CASSETTE BYTE COUNT  CBUFAD RMB 2  TV CASSETTE LOAD BUFFE
229. XXXXX111 Reserved    FF99 Video Resolution Register    The Video Resolution Register controls the resolution and colors displayed on  the computer     Bit 7 Undefined   Bits 5 6 LPF Lines per Field  Number of Rows   Bits 2 4 HRES Horizontal Resolution   Bits 0 1 CRES Color Resolution    LPF  These two bits determine the number of vertical rows on the high   resolution graphics display        Bit Pattern Rows Displayed                   192                   200  X10XXXXX 210                   225    HRES  These three bits  HR   HR2  determine the horizontal resolution  The  HRES bits set the display to a specific number of bytes  not pixels  across the  screen                 BP     Bit Pattern Bytes Row  Graphics  Text Resolution  XXX111xx 160 80 Characters Row  XXX110xx 128 64 Characters Row  XXX101xx 80 80 Characters Row  XXX100xx 64 64 Characters Row  XXX  llxx 40 40 Characters Row  xxx010xx 32 32 Characters Row  xxx001xx 20 40 Characters Row  xXxx000xx 16 32 Characters Row    CRES  If BP 1  these two bits  CR   CR1  determine the number of colors  available and the number of pixels contained in each byte  Multiplying pixels byte  by the bytes hi each row will give you the number of pixels in each row    If BP 0  then bit 1 has no effect and bit    is the attribute enable flag  If  attributes are not enabled  the number of characters appearing on the hi res text  screen is determined by the number of characters per row set by the HRES bits  the  number of rows displayed a
230. Y                   oe    5               64      VIDEO CONTROL REGISTERS                  BITE            BIT2  BIT3  BIT4  BITS  BIT6  BIT7                  BITE            BIT2  BIT3  BIT4  BITS  BIT6  BIT7       RMB    MCB  MC1  MC2  MC3  FEN  IEN  M P    coco    MC1      1  1    RMB    TR    TINS    1    MCB  x  0  1    1    APPENDIX    ORIGIN SPECTRAL ASSOC  MEMORY MAP REVISED 12 26 1999 WALTER K ZYDHEK    READ ADDRESS SECTOR TRACK WRITE SECTOR TRACK  BUSY BUSY  DRQ DRQ  LOST DATA LOST DATA  CRC ERROR  EXCEPT TRACK  CRC ERROR  EXCEPT TRACK   RNF  EXCEPT TRACK  RNF  EXCEPT TRACK   RECORD TYPE  SECTOR ONLY  WRITE FAULT  WRITE PROTECT  NOT READY NOT READY    TRACK REGISTER  SECTOR REGISTER  DATA REGISTER  FDCREG IMAGES    UNUSED SPACE   X COORDINATE FOR X PAD   Y COORDINATE FOR X PAD  STATUS REGISTER FOR X PAD  UNUSED    READ WRITE DATA REGISTER  STATUS REGISTER  COMMAND REGISTER  CONTROL REGISTER    SOUND SPEECH CARTRIDGE RESET  SOUND SPEECH CARTRIDGE READ WRITE  MULTI PAK PROGRAMMING REGISTER    RESERVED FOR FUTURE EXPANSION    INITIALIZATION REGISTER 0    ROM MAP CONTROL  SEE TABLE BELOW   ROM MAP CONTROL  SEE TABLE BELOW   STANDARD SCS   1   DRAM AT              IS CONSTANT  CHIP FIRQ OUTPUT ENABLED   CHIP IRQ OUTPUT ENABLED   MMU ENABLED   coco 1  amp  2 COMPATIBLE                         ROM MAPPING   16K INTERNAL  16K EXTERNAL   32K INTERNAL   32L EXTERNAL  EXCEPT FOR VECTORS   INITIALIZATION REGISTER 1    MMU TASK REGISTER SELECT    TIMER INPUT SELECT  1 70  5  0  
231. am  The table of colors given below is  the conversion used in 05 9 Level Two     Monitor Color Monitor Color   RGB CMP RGB CMP   00 00 Black 32 23 Medium intensity red  01 12 Low intensity blue 33 8 Blue tint red   02 02 Low intensity green 34 21 Light Orange   03 14 Low intensity cyan 35 6 Cyan tint red   04 07 Low intensity red 36 39 Full intensity red   05 09 Low intensity magenta 37 24 Magenta tint red   06 05 Low intensity brown 38 38 Brown tint red   07 16 Low intensity white 39 54 Faded red   08 28 Medium intensity blue 40 25 Medium intensity magenta  09 44 Full intensity blue 41 42 Blue tint magenta   10 13 Green tint blue 42 26 Green tint magenta   11 29 Cyan tint blue 43 58 Cyan tint magenta   12 11 Red tint blue 44 24 Red tint magenta   13 27 Magenta tint blue 45 41 Full intensity magenta  14 10 Brown tint blue 46 40 Brown tint magenta   15 43 Faded blue 47 56 Faded magenta   16 34 Medium intensity green 48 20 Medium intensity yellow  17 17 Blue tint green 49 4 Blue tint yellow   18 18 Full intensity green 50 35 Green tint yellow   19 33 Cyan tint green 51 51 Cyan tint yellow   20 03 Red tint green 52 37 Red tint yellow   21 01 Magenta tint green 53 53 Magenta tint yellow   22 19 Brown tint green 54 36 Full intensity yellow  23 50 Faded green 55 52 Faded yellow   24 30 Medium intensity cyan 56 32 Medium intensity white  25 45 Blue tint cyan 57 59 Light blue   26 31 Green tint cyan 58 49 Light green   27 46 Full intensity cyan 59 62 Light cyan   28 15 Red tint cyan
232. and bit  position specified by ACCA  pixel mask  to the color  in ALLCOL  Set CHGFLG  lt  gt  6 if pixel was unchanged by  the action     EVALUATE HI RES COORDINATES   Evaluate two expressions  in a Basic Line  Perform hi res coordinate range checks    H1    SUPER EXTENDED BASIC UNRAVELLED II APPENDIX H ORIGIN SPECTRAL ASSOC  SUPER EXTENDED BASIC ROUTINES AND ENTRY POINREVISED 12 26 1999 WALTER K ZYDHEK    on the values returned and store the tested values in  the address pointed to by Y     A X U CALPOS CALPOS FOR CURRENT HSCREEN MODE   Jump to the correct  E7DA CALculate POSition routine depending upon the current   HSCREEN mode   A X GIBITPIX CALPOS 2 COLOR MODE   Calculate the screen address and   E7FF  pixel mask for the 2 color hi res graphics mode  Enter    with X Y coordinates in HORBEG and VERBEG and exit with  the address in the X Register and the pixel mask in ACCA     A X G2BITPIX CALPOS 4 COLOR MODE   Calculate the screen address and   E820  pixel mask for the 4 color hi res graphics mode  Enter  with X Y coordinates in HORBEG and VERBEG and exit with   the address in the X Register and the pixel mask in ACCA     A X GABITPIX CALPOS 16 COLOR MODE   Calculate the screen address and   E83F  pixel mask for the 16 color hi res graphics mode  Enter  with X Y coordinates in HORBEG and VERBEG and exit with   the address in the X Register and the pixel mask in ACCA     A B X Y U E8D3 DRAW A HI RES BOX   Enclose a diagonal line with a box   box function of HLINE   Enter w
233. ches several of the routines in Basic to work in the Color  Computer 3  Unfortunately  the authors did not include patches that would fix any  of the inherent bugs in the old Basic  The main benefit of this complex system  as  far as the user is concerned  is that Basic is now located in RAM  and is easily  changed by pokes     The initialization routine for the Color Computer 3 begins at  8C1B  This  code writes over the DLOAD routine that was in the original Color Computer   actually  typing DLOAD will simulate pressing the reset button   This initial   ization routine is used for both a warm start  simply getting control of the  computer back from a runaway program  and a cold start  where the computer and  Basic have to be reinitialized   In the following paragraphs  we will discuss the  fundamental steps used to initialize the system    The body of the initialization routine is located in the 32K internal ROM at   C000  Therefore  one of the first actions which the routine at  8C1B does is to  enable the 32K internal ROM and jump to    000  The routine then does the following  steps   in order     1  Clear the Screen  The screen is cleared by storing  12s in all of the  palette registers  Note that the memory where the screen is pointing is not  necessarily clear  just all of the differing values display identical colors    2  Set up MMU Registers  The routine initializes the MMU registers to values  it needs    3  Copy Initialization Routine  The routine that copies Bas
234. criteria  which occasionally forced some  odd decisions  First  the CoCo 3 had to be as compatible as was possible the older  CoCos so that as much of the old CoCo software as possible would function on the  CoCo 3  Also the CoCo 3 had to be as inexpensive as possible so that it would have  a market niche  other than just selling it to CoCo 2 owners   This constraint led  to the GIME chip  or custom or tequila chip as it was also known      Memory    The most apparent difference with the Color Computer 3 is the capability of  having up to 512K of Random Access Memory  RAM   This RAM is made up of 256K  Dynamic RAM chips  The 128K version of the computer has four  64K x 4 bit  chips   whereas the 512K version has sixteen  256K x 1 bit  chips  Upgrading from 128K to  512K primarily consists of removing the existing RAMs and inserting the 512K  upgrade board into the provided sockets    It should be noted that several problems were encountered early on with the  RAMs supplied on early Color Computer 3s  the computer would crash during  manipulation of the screen in some of the horizontal virtual enable modes   These  models contained 150ns RAMs from Mitsubishi  These problems appeared to be solved  by replacing the RAMs with 150ns RAMs from Nippon Electronics Corp  NEC  or by  replacing them with 12 ns parts     The GIME Chip    The Color Computer 3 has many features not available on the original  Color Computer  including memory management  advanced interrupt processing  and  a
235. cs routines such as HDRAM  HLINE  HCIRCLE  etc  use the same direct page variables as their lower resolution Extended Basic  counterparts  As a result  mixing up the two types of commands may cause problems    HDRAM does not work properly with relative motion in the negative direction  that is greater than 255  For example  HDRAW      320   The distance is not  calculated property due to an error in the negate routine    HPUT will not work with the NOT action  The command is supposed to reverse  the image in the HGET HPUT buffer and place it on the screen  Because of the bug   the command reverses the specified section of the screen and does nothing with the  image    The RGB and CMP commands function by copying an image of the palette  registers from RAM into the palette registers  As they now stand  these commands  will only copy 15 instead of 16 palette registers when invoked  Palette register 15  is not copied which generally will not cause problems but the user should be aware  of this flaw in the RGB and CMP commands     Listed below are the Spectral approved fixes for the easily fixable bugs  listed above     To force HSCREEN to clear the hi res screen   POKE  amp HE6C6  amp H21    To fix the RGB and CMP commands   POKE  amp HE64C 16      To fix the HPUT NOT option   POKE  amp HEF13   amp HC4    33    SUPER EXTENDED BASIC UNRAVELLED II SUPER EXTENDED BASIC ORIGIN  SPECTRAL ASSOC  REVISED 12 26 99 WALTER K ZYDHEK    To fix the HDRAW bug   POKE  amp HF58D  amp HBD JSR  F
236. dvanced graphics  All of these functions  in addition to the original Color  Computer graphics modes  are handled by one large chip referred to as the GIME  chip  pronounced gimmee   for Graphics Interrupt Memory Enhancement   We will  touch on these subjects in the following paragraphs  and go into detail on them a  little later    The Central Processing Unit  CPU  in the Color Computer 3 is the 6809   This processor  by its very design  is limited to accessing 64K of memory at one  time  Making this chip work in a 512K computer is  therefore  a neat trick  To do  this  a system called memory management is employed  Memory within the computer is  divided up into 8K blocks  producing 16 blocks in a 128K system  64 blocks in  512K   From this pool of 8K blocks you may select any 8 to fill the CPU s memory  space of 64K    Two additional interrupts have been added to the Color Computer 3  The  first is a timer interrupt which is a 12 bit interval timer  allowing you to set it  to any value from 80 4095  This timer is counted down  and when it goes below 0  an  interrupt may be triggered  The count is decremented every 7 nsec or 63 5usec   selectable   The other interrupt is a keyboard interrupt  causing an interrupt to  occur whenever a key or joystick button is pressed     SUPER EXTENDED BASIC UNRAVELLED II COLOR COMPUTER 3 ORIGIN  SPECTRAL ASSOC  HARDWARE DIFFERENCES REVISED 12 26 99 WALTER K ZYDHEK    Super High Resolution Graphics    No fewer than 15 super high resolution g
237. e 7 Vertical offset registers  CoCo compatible mode   FF9F Horizontal Offset Register    Bit 7 HVEN Horizontal Virtual Enable  Bits 0 6       X6 Horizontal Offset Address    The Horizontal Offset Register allows you to add a horizontal offset to the  video display  The value in the bottom 7 bits of this register is multiplied by two  and added to the beginning screen address set in the vertical offset registers  For  example  setting this register to 3 will make the screen appear to shift left 6  bytes    One of the more interesting features incorporated into the Color Computer 3  is the horizontal virtual enable mode  which is turned on by setting bit 7 of the  horizontal offset register to 1  When you are in this mode  the screen width is  forced to be 256 bytes across  The value stored in the video resolution register  determines how many bytes of this 256 byte wide screen will be displayed    This may sound confusing  but let s try an example  First the graphics mode  is set up by storing a  16 in the video resolution register  this sets the screen  display to 80 bytes across   Next we store a  C000  the screen address  into the  vertical offset registers  Lastly  we store a  80 into the horizontal offset  register  turning on the horizontal virtual enable feature  The screen now displays  80 bytes of a 256 byte wide screen  The display starts at  60000  Now  simply by  storing an  81 into the horizontal offset register  the screen scrolls left 2  bytes  We are now lookin
238. e redirected to another routine  For example  Basic has a routine that checks  for a valid device number    screen   l cassette  and  2 printer   With just Basic  installed  any other value returns an error  With Disk Basic installed  however   the routine has to also allow numbers 1 15  The Basic routine executes a JSR to the  vector in low RAM  With just Basic installed  control is returned immediately  With  Disk Basic installed  control is re routed into the Disk Basic ROM  to a routine  that allows values 1 15     The Color Computer 2 was introduced in 1983 sporting a small white case and a  new keyboard  The changes were more cosmetic than anything else  At this point   several home computers were competing with the Color Computer  and prices were  falling fast  By combining several chips into one and replacing a few components   the Color Computer 2 primarily allowed Tandy to produce the computer less  expensively     In early 1984  Tandy considered producing a new version of the Color Computer    entitled the Deluxe   but the project was later canceled due to costs and the  planned super edition of the Color Computer  the Color Computer 3 was finally  introduced in August  1986  six years after the original Color Computer  offering  512K and advanced graphics     Many legacies of the Color Computer 1 and 2 remain in the Basic ROM of the  CoCo 3  Throughout Basic  Extended Basic  and Disk Basic you will find many  sections of code that were written to deal with the thr
239. ea must be of a temporary nature because the Disk Basic code is  loaded into this area when the contents of the ROMs are transferred to RAM  A  substantial portion of this code is used to patch Color Extended  and Disk if  there  Basic once it has been loaded into RAM  The patches make use of labels of  the following types  PATCHxx  ALINKxx and BLINKxx  The PATCHxx addresses correspond  to the actual address where the patch will be made  The ALINKxx addresses  correspond to those addresses where the patches will transfer control  The BLINKxx  addresses correspond to where the patch code will re enter the mainstream code  after the patch code has been executed  Not all patches will have a BLINKxx type  address since control may be returned by an RTS     The FCS pseudo op code is used in this listing  For those readers who are  unfamiliar with this pseudo op  it means exactly the same as an FCC pseudo op with  the exception that the last character in the literal string has a bias of  80 added  to it  If  for example  the last character of an FCS instruction was an E  it would  be assembled to  05  4945980      SUPER EXTENDED BASIC UNRAVELLED II COLOR COMPUTER 3 ORIGIN  SPECTRAL ASSOC  HARDWARE DIFFERENCES REVISED 12 26 99 WALTER K ZYDHEK    COLOR COMPUTER 3 HARDWARE DIFFERENCES    This chapter deals with the major hardware and software differences between  the original Color Computer and the Color Computer 3  The designers of the Color  Computer 3 were guided by several design 
240. ee ROM system  Much of it is  unnecessary  since Basic on the CoCo is now in RAM  but was retained to insure  compatibility with previous Color Computer versions     In October 1983  Spectral Associates introduced a 3 volume set of books  the  Basic Unravelled series  Those who have the 3 book set will find that Super  Extended Basic Unravelled will be a welcome addition to the 3 book set  Those who  don t already have these books should consider purchasing EXTENDED COLOR BASIC  UNRAVELLED and DISK BASIC UNRAVELLED     HOW TO USE THIS BOOK    Most users will undoubtedly spend the majority of their time using Appendix  B  which contains a source code listing of the top half of the Color Basic 2 0 ROM   This source code was developed independently by the author who has never seen or  had access in any way to any source code developed by Microsoft  Tandy or  Microware     Most labels used in Appendix B correspond to absolute addresses in ROM RAM  preceded by an  L   Literal labels have been assigned to RAM variables  memory  locations that contain data which may change  and some routines and data tables   The symbol table in Appendix C will allow the user to locate the address of the  literal label  The symbol table is composed of a long list of entries  arranged in  alphabetical order  Each entry contains an address  a type code and the actual  symbol  label  itself  The typecode maybe D  E or L  If it is a D  the symbol is a  variable name and it will be found in Appendix A  I
241. f the code is an E  the symbol  has been defined by an EQUATE pseudo op  Almost all of the equates may be found at  the start of the variable listing in Appendix A  If the code is an L  the symbol is    SUPER EXTENDED BASIC UNRAVELLED II INTRODUCTION ORIGIN  SPECTRAL ASSOC  REVISED 12 26 99 WALTER K ZYDHEK    a label and will be found in Appendix B or in Extended Color Basic Unravelled s  Appendix B     Super Extended Basic Unravelled only covers the top half of the CoCo 3 ROM   Extended Color Basic Unravelled covers the bottom half of the ROM  There are  several calls from the Super Extended portion of the ROM into the bottom half that  you will not be able to follow unless you have the Extended Color Basic book  Many  people have the Unravelled series  which was produced for the CoCo 2  The Extended  Color Basic Unravelled book is essentially a merged version of the older Color  Basic Unravelled  version 1 2  and Extended Basic Unravelled  version 1 1   If you  have both of these books  Appendix I provides a listing of all of the changes made  to convert Color Basic 1 2 and Extended Basic 1 1 into the bottom half of the  Extended Color Basic 2 0 ROM  The Disk Basic ROM  1 0 or 1 1  has not been modified  at all            CoCo 3 ROM  version 2 0  from addresses    000    DFFF contains the code  used to initialize the system and the cute digitized picture of the authors which  you get when you hold down the ALT and CTRL keys on power up or reset  The code  located in this ar
242. f the sets of registers is  determining the makeup of the logical address space  If bit 0 if  FF91 is set to  zero  then the eight MMU registers at  FFA    task register 0  control the makeup of  the logical address space  If bit    of  FF91 is set  then the eight MMU registers  at  FFA8  task register 1  control the makeup of the logical address space  see  Figure 3   The theory behind the two sets of registers is that each set of  registers may be allowed to control a different task by allocating two independent  segments of 64K to each task and then simply selecting the desired set of registers  in order to enable the desired task  This will work fine but you must be careful to  remember that switching between the task registers will do nothing to preserve the  status of the CPU registers  nor will it protect you from disasters if you should  be interrupted during the transition  Whenever new memory is switched into a  logical address space  be sure it isn t where the program counter  stack  or  interrupt service routine is located  Major problems may happen it is        If the MMU registers have Then the following blocks  the data below in them compose the logical address space   FF91  FF91  bit0 0   bit   1             24            34  0000 24 34          1 26  FFA9 56  2000 26 56   FFA2 15  FFAA 43  4000 15 43   FFA3 56  FFAB 34  6000 56 34   FFA4 41  FFAC 35  8000 41 35   FFAS 42  FFAD 08  A000 42 08   FFA6 62  FFAE 36  C000 62 36   FFA7 61            00  E000 61 00  
243. f this electronic document to PLEASE give  freely  These books are for educational informational use only  These books are no  longer in publication and Spectral Associates no longer in business  Do not use  these books for financial gain  as that would most certainly abuse the Copyright  Laws that I have already bruised by re producing them     Other than that  enjoy the books   I 11 add more information to them as I get  it  I plan on adding more Memory Map information  as well as hardware info in the  coming months  But for now  take advantage of this fine resource     Walter K  Zydhek    SUPER EXTENDED BASIC UNRAVELLED II INTRODUCTION ORIGIN  SPECTRAL ASSOC  REVISED 12 26 99 WALTER K ZYDHEK    INTRODUCTION    Super Extended Basic is the definitive source of information on the super  high resolution graphics commands and Basic enhancements available from the Color  Computer 3  Super Extended Basic Unravelled will deal with the enhancements to  Color Computer Basic that make Basic versions 2 0 and higher  These Basic versions  were introduced in the Color Computer 3  Super Extended Basic follows in the fine  tradition of the Basic Unravelled series  We are proud to say that these books are  the best documentation available concerning the internal structure of Color  Computer Basic  We believe that Color and Extended Basic Unravelled were used as a  guideline during the creation of Super Extended Basic 2 0     Super Extended Basic Unravelled will provide the reader with a co
244. g at a screen displaying 80 bytes of a 256 byte wide  screen  The display starts at  60002    By using the horizontal virtual enable along with the vertical offset  registers  you can effectively have a window displaying memory on a 256 byte wide  Screen  extending vertically as high as memory will allow  In addition  when the  seam  where the ends of the rows meet the start of the rows  is displayed  the  display is adjusted to make the two ends of the rows join together  This is truly  one of the more exciting features in the Color Computer 3    The horizontal offset addresses are intended to be used while the horizontal  virtual enable mode is on  and peculiar things happen when horizontal offsets are  used while not in the horizontal virtual enable mode  Let s say  for example  you  set up a screen that is 160 bytes wide  e g  HSCREEN 2   Since the horizontal  virtual enable is off  the video display circuitry recognizes that each row       20    SUPER EXTENDED BASIC UNRAVELLED II SUPER HIGH RESOLUTION ORIGIN  SPECTRAL ASSOC  GRAPHICS REVISED 12 26 99 WALTER K ZYDHEK    consists of 160 bytes  and each row starts 160 bytes after the start of the  previous row  makes sense      However  the horizontal offset circuitry does not  recognize the graphics mode  and tries to force a 256 byte wide screen  This is not  a problem when the horizontal offset register is set to 0  However  conflicts occur  when other values are stored in the horizontal offset register and the horizonta
245. h the notable exception of the vertical offset  registers  A condensed summary of the control registers is contained in Appendix D     The registers from FF9     FF97 are general purpose control registers for the GIME  chip    FF90 Initialization register 0 INITO  Bit 7 COCO 1 CoCo compatible mode  Bit 6 MMUEN 1 MMU enabled  Bit 5 IEN 1    GIME chip IRQ enabled  Bit 4 FEN 1    GIME chip FIRQ enabled  Bit 3 MC3 1    RAM at FEXX is constant  Bit 2 MC2 1   standard SCS  Spare Chip Select   Bit 1        ROM map control  Bit 0       ROM map control    COCO  This bit is used to toggle the CoCo compatible mode on and off  The  term CoCo compatible mode is somewhat of a misnomer as there are some CoCo 2  graphics modes  which are not supported by the CoCo 3  and some of the video  control registers are active even when the COCO bit is in the CoCo compatible mode   The programmer is best advised to use this bit for exactly what it was intended for    to be set when you are using CoCo 2 graphics modes and to be clear when you are  using the new CoCo 3 graphics modes  The descriptions of the CoCo 3 registers given    13    SUPER EXTENDED BASIC UNRAVELLED II    SUPER HIGH RESOLUTION  GRAPHICS    ORIGIN  SPECTRAL ASSOC  REVISED 12 26 99 WALTER K ZYDHEK    below will explicitly state those instances in which the programmer should use the  new registers with the COCO bit set                                                                                                                      
246. ic into RAM and  patches the code is moved to  4000 in RAM  This insures that it will be there with  all configurations of ROM RAM  Control is then transferred to this routine    4  Text Screen Display Set  The Video Registers are set up to display the  32x16 text screen    5  Initialize Registers  The Peripheral Interface Adapters  PIAs  and SAM  registers are initialized    6  F1 Key Check  The F1 key is polled  and a flag is set if the key is down   this is used to force the alternate color set      30    SUPER EXTENDED BASIC UNRAVELLED II SUPER EXTENDED BASIC ORIGIN  SPECTRAL ASSOC  REVISED 12 26 99 WALTER K ZYDHEK    7  ALT and CTRL Keys Checked  If the ALT and CTRL keys are both pressed   control is transferred to another routine that displays a digitized picture of  Basic s authors    8  Check the flag at  FFED  INT FLAG   If this flag is not  55  which would  indicate that it was set up before   control is transferred and a cold start is  forced    9  Check Reset Flag  Next the Reset Flag  RSTFLG   71  is checked  If it is  not  55  indicating that Basic has already been initialized   a cold start is  forced  Otherwise  the warm start routine is executed     The Warm Start Routine    The warm start routine is used when the initialization routine has determined  that Basic is still intact  First  the address of the warm start routine is  retrieved from the Reset Vector  RSTVEC   72   Next  the first byte at this address  is checked  If it is a NOP instruction  control 
247. ion PMODE by simply changing the PMODE  command  All coordinates are 0 255 across and 0 191 vertically  no matter what  graphics mode you are using  Unfortunately  the new authors did not adhere to this  convention  and the coordinates for drawing on the super high resolution screen  must change depending upon the HSCREEN resolution you are using    There are several key routines within Basic  which are described in the back  of the Basic User s manual  ROM ROUTINES   Programmers have been encouraged to use  the indirect calls to these routines  as they are the only calls supported by  Tandy  One of these calls  CHROUT  prints a character to a device       screen   1    cassette   2   printer   The code for this device is located at  6F  DEVNUM   Basic  2 0 now also checks the byte at  bE7  HRWIDTH   If this byte is 0  text is printed  to the standard 32 x 16 text screen  Otherwise  text is printed to the hi res text   HRWIDTH  screen  This change is not documented in the Basic manual  Many CoCo 2  programs use the official CHROUT ROM call  but do not insure that HRWIDTH is zero   This will cause Basic to attempt to write its message on the hi res screen with  unpredictable results since using the hi res screen is not supported by the CoCo 2     Inefficiencies    Several aspects of Super Extended Basic are somewhat inefficient  It is   unfortunately  clear that the people who wrote Super Extended Basic did not use  Color Basic regularly  The most glaring example is the omissi
248. is transferred to this warm start  address  Otherwise  a cold start is forced     Cold Start    First  Basic  Extended Basic  Disk Basic  if there   and Super Extended Basic  are copied into RAM  Next  several patches are made in Basic  Extended Basic  and  Disk Basic  these patches are detailed in Appendix B   C256   The intermediate jump  table for the interrupts is then moved to  FFEE  as well as the flag at             discussed earlier   If the flag indicating the alternate color set was chosen  i e   the F1 key was down   the color set is selected  Next the low resolution text  Screen is cleared to spaces  Lastly the palette registers are set to their default  values and control is transferred to the reset address in Basic  at  A027      New Commands    Shortly after a prototype Color Computer 3 was created  Tandy contracted with  Microware in Des Moines  Iowa  the makers of OS 9  to upgrade Basic to work with  the new features of the computer  Microware decided that the best system to use  would be to patch Basic during the initialization of the computer  The result of  this is a somewhat complicated system of ROM and RAM switching    The Color Computer 3 added several new commands to Basic  including ON ERROR  and ON BREAK trapping  high resolution text commands  and high resolution graphics  commands  You can even print characters on a hi res graphics screen    Most of the routines that make up the super high resolution graphics commands   HPAINT  HDRAW  HLINE  etc  
249. it 1 Unused  Bit   TR Task register select    TINS  This bit controls the clock input to the 12 bit interval timer     If the    bit is set  the input source will be 14 31818 MHz which will produce a clock pulse    approximately every 70 nanoseconds     If the bit is clear  the input source will be    the horizontal blanking pulse which will produce a clock pulse approximately every    63 5 micr  TR   the bit i    oseconds   If this  s clear     FF92 Interrupt    Bit    7    bit is set  then  FFA8  FFAF will be the active MMU registers   then  FFAQ   FFA7 will be the active MMU registers     if    request enable register IRQENR    Unused    14    SUPER EXTENDED BASIC UNRAVELLED II SUPER HIGH RESOLUTION ORIGIN  SPECTRAL ASSOC             GRAPHICS REVISED 12 26 99 WALTER K ZYDHEK  Bit 6 Unused  Bit 5 TMR Timer interrupt  Bit 4 HBORD Horizontal border interrupt  Bit 3 VBORD Vertical border interrupt  Bit 2 EI2 Serial data interrupt  Bit 1     1 Keyboard interrupt  Bit 0 EIQ Cartridge interrupt  TMR  A timer interrupt is generated whenever the 12 bit interval    timer  SFF94 SFF95  counts down to zero   HBORD  The horizontal border interrupt is generated on the falling  edge of the horizontal sync pulse   VBORD  The vertical border interrupt is generated on the falling edge  of the vertical sync pulse                             EI2  The serial data interrupt is generated on the falling edge of  a signal on pin 4 of the serial I O connector  JK 3        1  The keyboard interrupt 
250. ith the start and end  coordinates of the original line in HORBEG VERBEG   HOREND and VEREND     A B X Y U E8F6 FILL A HI RES BOX   Draw a series of horizontal lines  from VERBEG to VEREND     A B X Y U E906 DRAW A HORIZONTAL HI RES LINE   Draw a horizontal hi res  line from HOREND to HORBEG at the vertical coordinate  VERBEG with the palette register number in ALLCOL     A B X Y U E931 DRAW A VERTICAL HI RES LINE   Draw a vertical hi res  line from VEREND to VERBEG at the horizontal coordinate  HORBEG with the palette register number in ALLCOL     A B X Y U E94E DRAW A HI RES LINE   Draw a hi res line from  HORBEG   VERBEG  to  HOREND  VEREND      X   9  1 INCREMENT HORIZONTAL HI RES POSITION   Increment the  horizontal hi res position  HORBEG      X E9B8 INCREMENT VERTICAL HI RES POSITION   Increment the  vertical hi res position  VERBEG      X E9BF DEREMENT HORIZONTAL HI RES POSITION   Decrement the  horizontal hi res position  HORBEG      X E9C6 DECREMENT VERTICAL HI RES POSITION   Decrement the  vertical hi res position  VERBEG      H2    SUPER EXTENDED BASIC UNRAVELLED II APPENDIX H ORIGIN SPECTRAL ASSOC  SUPER EXTENDED BASIC ROUTINES AND ENTRY POINREVISED 12 26 1999 WALTER K ZYDHEK    A B E9CD CALCULATE HI RES ABS  VEREND VERBEG    Calculate the  absolute value of the distance between VEREND and  VERBEG  The carry flag will indicate which was the  larger coordinate     A B E9DB CALCULATE HI RES ABS  HOREND HORBEG    Calculate the  absolute value of the distance between
251. l  virtual enable mode is off    The results of this conflict are  1  The horizontal offset circuitry displays  the row as if it were 256 bytes wide  The first 160 bytes of the row are taken from  the current row  The next 96 bytes  160   96   256  of the row are obtained from  the beginning of the next row and 2  The video display circuitry starts each row  160 bytes past the start of the previous row  These two factors together appear to  mirror the first 96 bytes of the screen into the 96 bytes following the screen as  it is scrolled horizontally    This effect is moderately interesting  but has few practical uses  Since it  is probably the result of a compromise in the computer design  this effect will  probably not be supported in future versions of the Color Computer  The horizontal  offset is most efficiently used only if the horizontal virtual enable bit is set     Synchronous Address Multiplexer  SAM     The Synchronous Address Multiplexer is a special purpose chip used in the  older CoCos to control the addressing of the various chips in the CoCo such as the  RAMs  ROMs and the PIAs  This function has been incorporated into the GIME chip and  the SAM control registers have been retained in the addressing arrangement of the  GIME chip in order to provide compatibility with the older CoCos  The SAM registers  are located from  FFCO  FFDF and each pair of addresses in this range represents  one bit of a SAM control register  The bits are cleared by writing any data to 
252. mpatible bit  bit  7   FF90  and the BP bit  bit 7   FF98   It is important to realize that certain  graphics control registers will be valid only if the COCO and BP bits are set up in  a certain way  You may be able to produce interesting effects if you violate these  restrictions  but you will have no guarantee that the effect will be supported by  future versions of the Color Computer  if there are to be any future versions     The GIME chip treats the system RAM as one contiguous 512K block for the  purposes of video display  In a 128K system the true RAM is at the top of the  physical address space and there are three 128K images below it  The graphics  control registers are used to define the size of the screen and place it anywhere  within the 512K that you wish  If you wish to modify the contents of a high  resolution graphics or text screen  you must use the MMU registers to place that  portion of the screen into the logical address space of the CPU in order to change  the data   remember that the MMU registers will NOT affect the manner in which the  screen is DISPLAYED but you must use them in order to change the data    One last warning  be careful how you use the COCO and BP bits  You may get  some interesting effects if you set both of these bits  but it may bite you in the  end  We cannot say what the results will be if you use a mode which is not  specifically defined  All of the video control registers are designed to be used  when the COCO bit is cleared wit
253. mplete  detailed and fully commented source listing of the super high resolution graphics  package of Radio Shack s COLOR BASIC  It is not within the scope of this book to  teach the neophyte how to develop his own color graphics routines  The reader will  need to have a basic knowledge of 6809 assembly language programming to be able to  take full advantage of the opportunities  which this book presents  It is also  assumed that the reader is familiar with the contents of the Color Computer 3  Extended Basic manual which contains a general description of the overall operation  of Basic and much useful information concerning the manner in which the high  resolution graphics information is processed and put on the screen  The information  and routines explained in this book will allow the user to understand how the Color  Computer s routines alter the graphics screens and even allow the user to build his  own routines to interface with the graphics routines in Super Extended Basic     No attempt will be made to re explain the functions of BASIC or any routines   which were explained in the first book of the Color Basic Unravelled series  The  reader should be aware of the fact that Super Extended Basic is not a stand alone  system  There are many direct calls into Basic and Extended Basic  These calls are  not explained in this book and it will be necessary for the reader to refer to the  other Basic Unravelled books in order to get a full explanation of these ROM calls   A co
254. mplete memory map of the system operating variables is given in Appendix A and  a symbol table is given in Appendix C     HISTORY OF THE COLOR COMPUTERS    The original Color Computer was introduced in August of 1980 with a standard  4K of memory  Enclosed in a battleship gray case  it sold for about  400  The Color  Computer had a unique combination of random access memory  RAM  and read only  memory  ROM   There were two levels of Basic available  Color Basic and Extended  Color Basic  Disk Extended Color Basic was soon added to the group  Each of these  three levels of Basic were stored in their own ROM  The Basic ROM started at    000   the Extended Basic ROM at  8000  and the Disk Basic ROM was plugged into the  expansion port  ROM PAK slot  and started at 40068  Adding Extended Basic to your  system was as simple as inserting a ROM into the circuit board  The user added Disk  Basic by installing the Disk Controller into the expansion slot  This system of  adding ROMs to upgrade the system caused some problems during the design of Basic   Several routines in Color Basic had to be changed to work in Extended Basic and  Disk Basic  However  since they are in ROM  they couldn t be changed  The problem  was solved by the use of RAM hooks  Within Basic and Extended Basic  several  routines jump to these vectors located in lower RAM  at  15E   From here  control    SUPER EXTENDED BASIC UNRAVELLED II INTRODUCTION ORIGIN  SPECTRAL ASSOC  REVISED 12 26 99 WALTER K ZYDHEK    can b
255. ng this bit will put you in the alternate color set  Technically  this  bit tells the computer to invert the color burst phase going to the TV or  composite monitor  Setting this bit will reverse the red and blue colors in  the artifacting mode    MOCH  When this bit is set to 1  the composite  including TV  output of the Color  Computer 3 is changed to black and white  monochrome   This allows easier  reading and better resolution in higher resolution text and graphics modes   This bit will not affect the RGB display       50  If this bit is set  the power source is 50 Hertz  if the bit is clear  the  power source is 60 Hz   LPR   Lines Per character Row   These bits determine the number of vertical    lines used for each character in the text display  The one  two and three  lines per row settings have little practical value  as the character itself  is seven rows high  Changing the setting will not change the size of the  character  it will only change the number of rows between characters  These  settings only affect the way text is displayed on the screen  it has no  effect on the amount of memory used to contain the screen data        Bit pattern Lines per character row                   One line    16    SUPER EXTENDED BASIC UNRAVELLED II SUPER HIGH RESOLUTION ORIGIN  SPECTRAL ASSOC    GRAPHICS REVISED 12 26 99 WALTER K ZYDHEK   XXXXXOO1 Two lines   XXXXXO18 Three lines                 11 Eight lines   Xxxxx100 Nine lines   XXXXX101 Ten lines   XXXXX110 Twelve lines   
256. nted to by X   ALLCOL contains the palette register used     A B X          4 COLOR HI RES PRINT DRIVER   Convert the bit pattern in  ACCA into a hi res 4 color pixel pattern and put that  pixel pattern into the screen address pointed to by X   ALLCOL contains the palette register used     A B X F045 16 COLOR HI RES PRINT DRIVER   Convert the bit pattern in  ACCA into a hi res 16 color pixel pattern and put that  pixel pattern into the screen address pointed to by X   ALLCOL contains the palette register used     H3    SUPER EXTENDED BASIC UNRAVELLED II APPENDIX H ORIGIN SPECTRAL ASSOC  SUPER EXTENDED BASIC ROUTINES AND ENTRY POINREVISED 12 26 1999 WALTER K ZYDHEK    A B NEGACCD NEGATE ACCD   Negate the value contained in ACCD    FACC   A B F5FD MULTIPLY ACCD BY 18   Multiply the value contained in  ACCD by 10   none   608 NUMERIC ASCII TEST   Test          to see if it contains       numeric  0 9  character  Return the carry flag clear if  numeric  set if not     A B X C0L32 SET TO 32 COLUMN MODE   Set up the 32 column CoCo com    F652  patible text mode and clear the text screen  This routine  will enable IRQ and FIRQ at the CPU level     A B X   0140 SET TO 40 COLUMN MODE   Set up the 40 column hi res text   F65C  mode and clear the text screen  This routine will enable  IRQ and FIRQ at the CPU level     A B X   0180 SET TO 80 COLUMN MODE   Set up the 80 column hi res text   F679  mode and clear the text screen  This routine will enable  IRQ and FIRQ at the CPU level     A
257. on of a routine that  would save a super high resolution screen to disk or tape    When Basic version 1 2 was released  one of the changes was an alteration to  the Read Key routine  The result was that Basic ran faster  instead of individually  checking each key to see if it was down   Basic was changed to first check to see  if any key was down   Basic 2 0 changed this upgrade back to the original method   There were probably intentions of making Basic work with the keyboard interrupt   then the idea was scrapped and the patch accidentally left in     Ram Hooks    Many of the Super Extended Basic command and functions have been provided  with a pseudo RAM hook  Since Basic is run in RAM in the CoCo 3  it doesn t really  make sense to call them a RAM hook but it does make it easier to draw a parallel  to the RAM hooks used in the earlier versions of Basic  The RAM hooks come in the  form of a LBRN 0 instruction  This is a convenient way to allow the user to patch  or modify any of the routines  which have a RAM hook  Of course  it should be  obvious that ANY Basic routine may be easily patched in the normal manner if the  user desires to do so since Basic runs in RAM     32    SUPER EXTENDED BASIC UNRAVELLED II SUPER EXTENDED BASIC ORIGIN  SPECTRAL ASSOC  REVISED 12 26 99 WALTER K ZYDHEK    Bugs    There are several bugs within Super Extended Basic  Some are minor and  without too much consequence  Others  however  are potentially disastrous  Here are  a few of the more impo
258. order to access the screen  this memory is  mapped into logical block 1 as shown in Figure 2  Block numbers 48 51 are the super  hi res graphics screen  Block 56 must remain in logical block    because it contains  all of Basic s system variables and interrupt vectors  and block 63 must remain in  logical block 7 because it contains the Basic program code  which manipulates the  super hi res graphics screen  Block 53 is moved into logical block 6  overlaying  Disk Basic  and is used as the HPUT HGET buffer        MMU Block Logical Physical   Register Number Block Number Address   FFA7 63 7  7E000  7FFFF Program   FFA6 53 6  6A000  6BFFF HGET Buffer   FFA5 61 5  7A000  7BFFF Program   FFA4 51 4  66000  67FFF Screen   FFA3 50 3  64000  65FFF Screen   FFA2 49 2  62000  63FFF Screen          1 48 1  60000  61FFF Screen               56     70000  71FFF System DP  Figure 2   Super Hi Res Graphics Memory Configuration    11    SUPER EXTENDED BASIC UNRAVELLED II MEMORY MANAGEMENT ORIGIN  SPECTRAL ASSOC  REVISED 12 26 99 WALTER K ZYDHEK    There is one final aspect of the Color Computer 3 s memory management system   which must be addressed  The Color Computer 3 has two sets of MMU registers  The  first set of eight registers located at  FFA  should be very familiar to you by  now  The second set of eight registers is located at  FFA8 and their function is  identical to that of the first set in every aspect  Bit 0 of initialization  register 1   FF91  is used to determine which one o
259. raphics modes have been added to the  Color Computer 3  four of which are accessible from Basic  These range from 128  pixels across with 2 colors to 640 pixels across with 4 colors in addition  each  graphics mode can have any one of 4 depths  192  200  210  and 225 rows   This  allows up to 60 different possibilities  actually there are more   which we 11  discuss a little later   Basic is limited to 192 vertical rows    In addition to the new graphics modes  the Color Computer 3 has 64 colors  available  with a maximum of 16 on the screen at a time  actually  if you do some  fancy stuff with interrupts  you can get all 64 at a time  but that s beyond the  scope of this book   To allow up 64 different colors  palette registers were  incorporated into the GIME chip  Palette registers are discussed in detail in  Chapter Five    The original Color Computer allowed you to start the screen display on any  512 byte boundary  This has been improved in the Color Computer 3 to allow the  Screen to be set on any eight byte boundary  This allows a true smooth vertical  scroll  In addition  there is a technique that allows smooth horizontal scrolling   Along with the new graphic capabilities  there are also new text modes available   Text can be displayed with 32  40  64  or 80 characters per horizontal row    In the Color Computer 3  you have control over the color of the border  which  you did not on the original Color Computer     Sound    In order to keep the cost of the Color Comp
260. rtant ones    Any Basic program containing Disk Basic commands must be listed out with Disk  Basic installed  If you try to list the program without Disk Basic  the computer  will hang  For example  let s look at the line 10 KILL TEMP DAT   The program will  load into a system that does not have Disk Basic installed  The program will even  run and will return an  SN ERROR IN LINE 10  However  when the line is LISTED  the  computer will hang  Basic gets confused when it can t find the word KILL for the  Basic token in line 10     The Super Extended function tokens have been forced to start at  29  They  should be forced to start at  28  As a result  function token number  28 will never  be used  This is not a bug of earth shaking proportions  but one should be aware of  T Us   The ERLIN function will return a negative number if the line number in which  the error occurred is greater than 32767  This is caused by the fact that the ERLIN  function returns the line number as a two byte integer instead of a floating point  number  as it should    Extended Basic graphics commands  LINE  CIRCLE  DRAW  etc   don t work well  with their Super Extended Basic counterparts  HLINE  HCIRCLE  HDRAM  etc   For  example  the command HLINE   192 639  PSET LINE   0 0    5     will cause problems   often destroying the Basic program   This means you must be very careful to  include the H before the Super Extended graphic commands  These problems are caused  by the fact that Super Extended graphi
261. s available for use as a border color may be  found in Appendix D     FF9B Unused  FF9C Vertical Scroll Register    Bits 4 7 Reserved  Bits 0 3 VSC Vertical Scroll bits    The Vertical Scroll Register is used to allow smooth vertical scrolling while  in the hi res text modes  and is used in conjunction with the LPR bits of the video  mode register  By storing consecutively larger numbers in the VSC bits  the screen  will scroll up one graphics row at a time  This will continue until you reach the  lines per character row value that was set by the LPR bits  Once you reach this  value  to continue scrolling you should reset the vertical scroll register and then  use the vertical offset registers to move the display down one entire character  row     FF9D  FF9E Vertical Offset Registers    The Vertical Offset Registers combine to determine the address  Y15 Y0  in  memory where the video display starts when in the non CoCo compatible mode  The  video display is treated as one large contiguous block  starting at  00000 and  extending to  7FFFF  if the system has only 128K  the RAM is located from  60000 to   7FFFF and is mirrored into lower RAM in three 128K sections   The screen can be  set to start on any 8 byte boundary  The video display address is set by taking the  desired address  dividing it by 8  and storing that value in the vertical offset  registers           Yd 5   Yan        YL T TO Y9 Y8 Y Y6 Y5 Y4      Y2 Y1 YO  Vertical offset 1  SFF9D  Vertical offset 0  SFF9E   
262. s set by the LPF bits and the number of lines per row as  set by the LPR bits of the video mode register  If the attributes are enabled  the    17    SUPER EXTENDED BASIC UNRAVELLED II SUPER HIGH RESOLUTION ORIGIN  SPECTRAL ASSOC  GRAPHICS REVISED 12 26 99 WALTER K ZYDHEK    number of bytes required to display a hi res text screen is doubled  Each character  byte is followed by an attribute byte as defined in Figure 4  Therefore  if  attributes are enabled  all even bytes are character bytes  the make up of which is  determined by the GIME chip s internal character generator  and all odd bytes are  attribute bytes  If the blink bit is set  the characters will blink at a rate which  is determined by the interval timer   FF94  5   If the timer is set to zero the  characters will not blink  The foreground colors are controlled by palette register  numbers 8 15 and the background colors are controlled by palette register numbers  0 7  Attributes are not available if COCO 1                 BP 0  Colors Pixels    Bit Pattern Available Byte Attributes  XXXXXX11 Undefined Undefined enabled  XXXXXx 1 0 16 2 disabled  XXXXXXO1 4 4 enabled  XXXXXX0 f  2 8 disabled   Bit 7 BLINK 1 Character blinks   Bit 6 UNDLN 1 Character is underlined   Bit 5 FGND2 Foreground Color  MSB    Bit 4 FGND1 Foreground Color   Bit 3 FGND  Foreground Color  LSB    Bit 2 BGND2 Background Color  MSB    Bit 1 BGND1 Background Color   Bit   BGNDO Background Color  LSB     Figure 4   Attribute byte    Summarized in
263. t     ENTRY CONDITIONS  HRWIDTH should be set to a valid value     EXIT CONDITIONS             and the video control registers are modified  All CPU registers  except  CC are preserved     PRGGRAPH    E804    Program            and the video control registers with their RAM images according  to the value contained in HRMODE  Basic  unmodified by the user  will do the  following  1  If HRMODE is 1 2 3 or 4  set the proper HSCREEN graphics mode  or 2  if HRMODE is any other value  cause invalid and potentially disastrous  data to be programmed into INIT  and the video control registers  A RAM hook  exists in this routine which will allow the user to modify it     ENTRY CONDITIONS  HRMODE should be set to a valid value  1 4     Gl    SUPER EXTENDED BASIC UNRAVELLED II APPENDIX G ORIGIN SPECTRAL ASSOC    SUPER EXTENDED BASIC ROM ROUTINES REVISED 12 26 1999 WALTER K ZYDHEK    EXIT CONDITIONS             and the video control registers are modified  All CPU registers  except  CC are preserved     PRGMMU    E0906   Program the MMU registers with their RAM images     ENTRY CONDITIONS  None    EXIT CONDITIONS  The MMU registers are modifed  All CPU registers  except CC are preserved     GETTEXT    E998    Place block 6 6 into the RAM image of the Task Register   MMU register which  controls logical block 1  Then copy the RAM image of the MMU registers to the  MMU registers  Finally  replace block 6 6  as saved above  with block 7 1 in  the RAM image of the MMU registers  This is a ver
264. the  even numbered bit  and set by writing any data to the odd numbered bit  Only those  registers listed in Figure 8 are active in the CoCo 3    In the old CoCos  the CPU speed was controlled by two bits and true double  speed could not be obtained without losing the video display  The CoCo 3 allows  true  non address dependent double speed so the CPU rate only requires one bit    either single or double speed    The map type bit controls the ROM select lines of the GIME chip  If it is  clear  the ROM select lines are allowed to be active and the MC1 and MC  bits of             specify the configuration of the ROM  If it is set  none of the ROM select  lines are allowed to be active and the system ROM is disabled    While in the CoCo compatible mode the SAM chip selects the 512 byte boundary   within the 64K segment specified by the YH2 YH  bits  where the screen display  will start  This is done by setting or clearing the appropriate display offset  register bits  For example  to set the SAM to an offset of  400 you would set bit       of the SAM display offset and clear the other SAM display offset bits  This is  done by writing any data to addresses  FFC6   FFC9   FFCA   FFCC   FFCE   FFDO           FFD2    The display mode control and the display offset registers have no effect in  the non CoCo compatible mode        Address SAM Register Bit   FFDE F TY map type            1          FFD8 9 R1 CPU rate     normal  1 double speed   FFD2 3 F6 display offset register  MSB  
265. tting its  instructions from the section you re replacing  This is critically important with  interrupts  When an interrupt occurs  which could happen anytime  control of the  CPU must be transferred to a safe area of memory  The area from  FEO0  FEFF is  especially good for this purpose since it is a special area of the logical address  space  Bit 3 of INIT  may be used to exempt this area from the effects of the MMU  registers  thus guaranteeing that the RAM in this area is constant regardless of  the changing contents of the MMU registers  Programs written for the original Color  Computer that try to use the top of this area of RAM will most likely not work on  the CoCo 3 because the CoCo 3 routes its interrupt vectors through there    There are four new keys on the CoCo 3 s keyboard  The OS 9 operating system  uses the Control  CTRL  and Alternate  ALT  keys  Basic doesn t use or recognize  any of the new keys  except on power on  as described below      SUPER EXTENDED BASIC UNRAVELLED II COLOR COMPUTER 3 ORIGIN  SPECTRAL ASSOC  HARDWARE DIFFERENCES REVISED 12 26 99 WALTER K ZYDHEK    One of the popular graphic modes on the original Color Computer is the  artifacting mode  This mode  accessed from Basic by the command PMODE 4 SCREEN 1 1   allows 128 x 192 graphics with red  blue  black  and white colors  Depending upon  how the computer fired up  the red and blue colors may be switched  so most  programs ask you to press the reset button to change the colors  On the Color
266. ute a  GOSUB 98  The color will be converted to the appropriate composite color   Then simply set the palette to the value in C  For example  assuming R    has    already been set up   a line might read    270 C 27   GOSUB 90   PALETTE 3 C    E2    SUPER EXTENDED BASIC UNRAVELLED II APPENDIX F ORIGIN SPECTRAL ASSOC    SUPER EXTENDED BASIC S DATA ASCII TABLES REVISED 12 26 1999 WALTER K ZYDHEK    Listed below are all of the data and ASCII tables found in the last half  CO00 FDFF  of the    Super Extended Basic ROM     START    C22E  C236  C246  C256   30     C351  C359  C405  E000  E032      6    E070        1    162    1  5    236    264    27      2      E2F8  E316  E4CC  E654  E664  E678  E6CB    E759  E75D    E7F1  EA25  EB99              F002  F035  F06C  F09D  F702  F71B    END    C235  C245  C255  506  C321  C358  C36B  DCB4  E218  EBAC                81              16      235    263  E27D  E287  E2F7  E315  E388  EACF  E663  E673  E687  E6CE    E75C  E760    E7FE  EA2C  EBBC  EEEE    F    B  F044  FO8B  F39C  F71A  F72F    DESCRIPTION    VIDEO CONTROL REGISTERS  IMAGE  INITIALIZATION    PALETTE REGISTERS    IMAGE  INITIALIZATION    MMU REGISTERS    IMAGE  INITIALIZATION    COLOR EXTENDED BASIC PATCH TABLE   CODED AUTHORS  NAMES   DISK BASIC PATCH TABLE   INTERRUPT JUMP TABLE IMAGE   DIGITIZED PICTURE OF THE AUTHORS   ROM ROUTINES  ADDRESS VECTORS   VIDEO REGISTERS  TEXT MODE IMAGES   VIDEO RESOLUTION REGISTER   FF99  VALUES   VIDEO REGISTERS  GRAPHICS MODE IMAGES   M
267. uter 3 down  no sound chips  were installed into the computer  Sound is still generated using the CPU or the  optional Sound Speech Cartridge      FF22    In the old CoCos the graphics display was taken care of by the Video Display  Generator  VDG   Controls were passed from the CPU to the VDG by way of Peripheral  Interface Adapter 1  PIA1   The graphics display of the CoCo 3 is handled entirely  by the GIME chip  which has eliminated the need to pass controls through PIAL   However  in order to maintain compatibility with the older CoCos  a register has  been built into the GIME chip which will retain any information written to the old  VDG control bits of  FF22  This internal GIME chip register is not accessible by  the user and any data returned by reading  FF22 will come from PIA1  not from the  GIME chip  The          bits  which provided control to the VDG in the older CoCos  are  not used in the CoCo 3  Bit 2 of  FF22  RAMSZ  is also not used   there is no  hardware flag in the CoCo 3 to tell the user if the system contains 128K or 512K    The existence of the GIME chip s internal  FF22 register has allowed the  addition of some extra features to the CoCo 3 s CoCo compatible mode  32 column    Bits 4  upper lower case  and 5  invert  can be used to invert the foreground and  background colors of the text screen or to allow true lower case characters    If bit 4   0  the ASCII codes from 0 31 will be the inverse video  representations of the codes from 64 95  If bit 4 
268. which may affect the timer input clock  FIRQ and IRQ are masked on at the CPU     GETTASK1    E    E   Select Task Register 1 as the active task register    ENTRY CONDITIONS  None    EXIT CONDITIONS   The stack pointer has been reset to  DFFF and the old stack pointer has been  saved on the new stack  All other CPU registers  except CC  have been saved   V40 V45 have been modified             has been forced to 1 which may affect the  timer input clock  FIRQ and IRQ have been masked off at the CPU     GOCART   E910  This address is used to execute a ROM cartridge  on the expansion port  if the  cartridge does not autostart     SPARES    E913   This address is undefined     SPARE     E 15   This address is undefined     SPARE2    E 17   This address is undefined     G3    SUPER EXTENDED BASIC UNRAVELLED II    APPENDIX H ORIGIN SPECTRAL ASSOC    SUPER EXTENDED BASIC ROUTINES AND ENTRY POINREVISED 12 26 1999 WALTER K ZYDHEK    Listed below are several routines in the Super Extended Basic ROM  which run in    RAM      These routines should be used with great care since they usually expect    that some of Basic s variables have been initialized to a certain range of    values in order to function   exit to Basic s error processing code     If the routines encounter an error  they will  The user must be aware of this fact    and intercept Basic s error routines if you are to stay in control while  using these routines       BEWARE     MODIFIED     REGISTERS    none    A B X Y    B 
269. will be triggered whenever a zero             appears on any one of the            6 pins of PIAO  These pins are  normally programmed as inputs and are used to read the  keyboard  The programmer should be warned that it is not  chiseled into tablets of granite that these pins remain inputs  some interesting effects may be had by programming one as an  output and using it to generate an interrupt  In their normal  condition as inputs  an interrupt will be generated if a key  is pressed and the proper keyboard column is strobed by  placing a zero in the correct column strobe register  SFF00   bit OR if a joystick fire button is pressed  It is Important  to note that a keyboard interrupt cannot be generated if there  is not at least one zero in the keyboard column strobe  register  ignoring joystick fire buttons   Also note that  there is no way to mask off the joystick fire buttons   they  will always generate a keyboard interrupt   EIO  A cartridge interrupt will be generated on the falling edge of  a Signal found on pin 8  CART  of the expansion connector                                                                                                  FF93 Fast interrupt request enable register FIRQENR  Bit 7 Unused  Bit 6 Unused  Bit 5 TMR Timer interrupt  Bit 4 HBORD Horizontal border interrupt  Bit 3 VBORD Vertical border interrupt  Bit 2 EI2 Serial border interrupt  Bit 1     1 Keyboard interrupt  Bit 0 EIQ Cartridge interrupt    The bits of FIRQENR are defined identicall
270. xel 6          pixel 7  PAQ  pixel 8    Bit 2 PA2  pixel 2         pixel  Bit 1 PA1  pixel 2     1  pixel  Bit 0         pixel 2         pixel  Figure 11 Pixel palette register configuration  Palette Pixel bit Palette  number pattern register address  0 0000  FFBQ  1 0001             2 0010  FFB2  3 0011  FFB3  4 0100  FFBA  5 0101  FFB5  6 0110  FFB6  7 0111  FFB7  8 1000  FFB8  9 1001         9  10 1010  FFBA  11 1011  FFBB  12 1100  FFBC  13 1101  FFBD  14 1119  FFBE  15 1111  FFBF    Figure 12 Pixel pattern palette register relationship    The palette registers are not affected by the COCO bit  bit 7   FF90   Figure  13 shows the palette registers that are used in the different low and high   resolution graphics and text modes     Graphics Text Mode       Palette Registers Used    Palette Addresses       32 x 16 Lo res text    Backgroun  Foregroun    d  d    32 40 64 80 Column Hi res text    Backgroun  Foregroun    Lo res  RG2   RG2   CG3   CG3   RG3   RG3   CG6   CG6   RG6     graph    55 0    55 1    55 0    55 1    55 0    55 1    55 0    55 1    55 0    d  d    ics    13  12    m  m    m                         OO                 m    WON CO                  25     FFBD   FFBC     FFB    FFB7   FFB8  FFBF     FFB8  FFB9   FFBA  FFBB   FFBQ  FFB3   FFB4  FFB7   FFB8  FFB9   FFBA  FFBB   FFBQ  FFB3   FFBA  FFB7   FFB8  FFB9    SUPER EXTENDED BASIC UNRAVELLED            COLORS AND PALETTES            CSS 1 10 11  Hi res graphics   16 COLOR 0 15   4 COLOR 0 3   2 COLOR 0 
271. y special purpose routine  used by Basic to replace the hi res text screen into the logical address space  so that they may be modified     ENTRY CONDITIONS  None    EXIT CONDITIONS         RAM image of MMU register one of task register    and the MMU registers are  modified  All CPU registers  except CC  are preserved                         E99A     Place a block into the RAM image of Task Register    MMU register which controls  logical block 8  Then copy the RAM image of the MMU registers to the MMU reg   isters  Finally  replace the block  as saved above  with block 7 0 in the RAM  image of the MMU registers  This is a very special purpose routine used by  Basic to place any block into the logical address space so that it may be  modified     ENTRY CONDITIONS  B contains the block     3F  to be loaded     EXIT CONDITIONS    The RAM image of the MMU register   of task register   and the MMU registers  are modifed  Akk CPU registers  except CC  are preserved                         E00C   Restore task register   as the active task register     ENTRY CONDITIONS    G2    SUPER EXTENDED BASIC UNRAVELLED II APPENDIX G ORIGIN SPECTRAL ASSOC    SUPER EXTENDED BASIC ROM ROUTINES REVISED 12 26 1999 WALTER K ZYDHEK    The new address for the stack pointer must be the first two bytes on the stack     EXIT CONDITIONS   The stack pointer is reset to the first two bytes on the old stack    11 other   CPU registers  except CC  are preserved  V40 V45 are modified             is cleared  
272. y to those of IRQENR   FF94 Timer register MSB    Bits 4 7 Unused  Bits 0 3 High order four bits of the timer    15    SUPER EXTENDED BASIC UNRAVELLED II SUPER HIGH RESOLUTION ORIGIN  SPECTRAL ASSOC  GRAPHICS REVISED 12 26 99 WALTER K ZYDHEK    See the description of the timer register low order bits   FF95    FF95 Timer register LSB  Bits 0 7 Low order eight bits of the timer    The 12 bit interval timer located at  FF94  FF95 may be set to any value from  g to 4095  When a value is loaded into the timer MS byte  the count will be  automatically started  The timer will count down  it cannot count up  until it gets  to zero at which time the initial count will be reloaded and the count down will  restart  If the timer registers are loaded with 0  the count down process will be  inhibited  The clock input to the timer may be either 14 31818 MHz or 15 734 KHz as  selected by bit 5 of INITI     FF96 Reserved  FF97 Reserved    The registers from  FF98    FF9F are the video control registers and are used  to control the new video modes of the GIME chip     FF98 Video Mode Register    Bit 7 BP 0   Text modes  1   Graphics modes  Bit 6 Unused  Bit 5 BPI Burst Phase Invert  Color Set   Bit 4 MOCH 1   Monochrome on Composite  Bit 3 H50 1   50 Hz power  0   60 Hz power  Bits 0 2 LPR Lines per row  BP   Bit Plane   Determines whether the computer is to display graphics or    text  If this bit is set to 0  the screen is displayed as text  If it is 1   graphics are displayed    BPI  Setti
    
Download Pdf Manuals
 
 
    
Related Search
 super extended basic..  super extended shotgun chokes 
    
Related Contents
User Manual English - Velopex International  スターターキット 取扱説明書  PDF版カタログをダウンロード  HealthRider HREL89070 User's Manual  Motion Control Frequency Inverter (DC  IPI, Host Communications Software, GFK-0871C  BS01 (BONSAI Mini) 3D プリンタ ユーザマニュアル  User Manual (9.5M pdf)  XTract 1.00 User`s Manual  User Manual    Copyright © All rights reserved. 
   Failed to retrieve file