Home

super-extended-basic..

image

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

image

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