====== EASTER EGGS ======
There are a number of Easter Eggs hidden in the Tandy Color Computer ROMs.
===== MICROSOFT =====
==== BASIC-65 ====
Color BASIC was built from Microsoft BASIC-69 (BASIC for the 6809), built from BASIC-68 (for 6800-series), built from BASIC-80 (for the 8080), built from BASIC-65 (for the 6502) which Bill Gates famously hid an Easter Egg in: [[https://www.pagetable.com/?p=43|Bill Gates' Personal Easter Eggs in 8-bit BASIC]] \\
The hidden Microsoft! bytes are still present in the Color BASIC ROMs.
Spectrum Associates' "Color BASIC Unravelled" lists the encoded Easter Egg bytes as "UNUSED GARBAGE BYTES" because the BASIC-65 code that would use them is no longer present in BASIC-69.
BFE6 A1 54 46 8F 13 LBFE6 FCB $A1,$54,$46,$8F,$13 UNUSED GARBAGE BYTES
BFEB 8F 52 43 89 CD FCB $8F,$52,$43,$89,$CD UNUSED GARBAGE BYTES
You can see it with the following BASIC code from Barry Nelson:
10 CLS
20 FOR A=&HBFEF TO &HBFE6 STEP -1
30 C=(PEEK(A) AND &H3F) OR &H40:IF C>=&H60 THEN C=C AND &H3F
40 PRINT CHR$(C);
50 NEXT A:PRINT
{{:tandy_color_computer:microsoft_easter_egg.jpg?direct&600|}}
==== BASIC-69 ====
Additionally, for Color BASIC has a second Microsoft Easter Egg, presumably because the authors did not know about the original Bill Gates egg still present in the data.
If you type CLS followed by any number 9-255, the screen will clear and the word MICROSOFT will appear on the top line.
The text is stored in addresses $A166 - $A170:
* COPYRIGHT MESSAGES
LA147 FCC 'COLOR BASIC '
FCB '1'
FCC '.'
FCB '3'
LA156 FCB CR
LA157 FCC '(C) 1982 TANDY'
LA165 FCB $00
LA166 FCC 'MICROSOFT'
LA16F FCB CR,$00
The code that activates this egg is in the CLS statement:
* CLS
CLS JSR >RVEC22 HOOK INTO RAM
BEQ LA928 BRANCH IF NO ARGUMENT
JSR >LB70B CALCULATE ARGUMENT, RETURN VALUE IN ACCB
CMPB #8 VALID ARGUMENT?
BHI LA937 IF ARGUMENT >8, GO PRINT ‘MICROSOFT’
TSTB SET FLAGS
BEQ LA925 COLOR 0
DECB ACCB NOW CONTAINS 0-7
LDA #$10 EACH GRAPHIC BLOCK SEPARATED BY $10 FROM ONE ANOTHER
MUL ACCB CONTAINS ONE OF 8 OFFSETS
ORB #$0F BITS 0-3 SET FOR SOLID COLOR GRAPHIC BLOCK
LA925 ORB #$80 BIT 7 SET FOR GRAPHICS
FCB SKP2 SKIP TWO BYTES
* CLEAR SCREEN
LA928 LDB #$60 BLANK
LDX #VIDRAM GET ADDR OF START OF SCREEN BUFFER
LA92D STX CURPOS SAVE IT IN CURPOS
LA92F STB ,X+ FILL SCREEN WITH CONTENTS OF ACCB
CMPX #VIDRAM+511 END OF SCREEN?
BLS LA92F NO
RTS
LA937 BSR LA928 CLEAR SCREEN
LDX #LA166-1 *
JMP >LB99C * PRINT ‘MICROSOFT’
===== MICROWARE =====
==== SUPER EXTENDED BASIC ====
Super Extended BASIC is built to interoperate with Color BASIC, so the Easter Eggs above still function on the Color Computer 3.
But the Color Computer 3 added new ROM which included new additional Easter Eggs:
==== CLS100 ====
When in Super Extended BASIC:
WIDTH80
CLS100 shows "T. Harris and T. Earles"
CLS100 again shows "Microware Systems Corp."
* THESE DATA ARE THE NAMES OF THE AUTHORS IN COMPLEMENTED ASCII (T.Harris & T.Earles,CR,0)
SC30D FCB $AB,$D1,$B7,$9E,$8D,$8D
FCB $96,$8C,$DF,$D9,$DF,$AB
FCB $D1,$BA,$9E,$8D,$93,$9A
FCB $8C,$F2,$FF
This is called from the routine which copies the Super Extended BASIC ROM into RAM as a "patch":
* DECODE AND COPY THE AUTHOR'S NAMES INTO RAM
SC1DE LDX #AUTHORMS POINT X TO THE DESTINATION FOR THE AUTHORS' NAMES
LEAY SC30D,PC POINT Y TO THE CODED NAMES OF THE AUTHORS
LDB #21 21 BYTES IN THE AUTHORS' NAMES
SC1E7 LDA ,Y+ GET A CODED BYTE OF THE AUTHORS' NAMES
COMA DECODE THE BYTE
STA ,X+ SAVE THE UNCODED BYTE
DECB BUMP COUNTER DOWN ONE.
BNE SC1E7 LOOP UNTIL ALL BYTES DECODED
RTS
And the patched CLS code that checks for CLS100 and does the authors names then microware commercial:
* CLS PATCH ENTERED FROM $8C4C
ALINK23 PULS CC RESTORE THE ZERO FLAG
LBRN RAMLINK RAM HOOK
BEQ SF6E0 CLEAR THE SCREEN CURSOR ATTRIBUTES IF NO ARGUMENT
JSR EVALEXPB EVALUATE EXPRESSION, RETURN VALUE IN ACCB
TSTB TEST ARGUMENT
BEQ SF6E0 BRANCH IF CLS 0
CMPB #$08 CHECK FOR CLS 8
BHI SF6E7 BRANCH IF > CLS 8
DECB CHANGE 1-8 TO 0-7
LEAY IM.PALET,PC POINT TO THE PALETTE REGISTER IMAGES
LDA B,Y GET THE COLOR IN THE PALETTE REGISTER
STA V.BORDER AND SAVE IT AS THE NEW BORDER COLOR
LBSR SF766 SET THE BORDER COLOR IN THE 40 & 80 COLUMN VIDEO MODE IMAGES
STB >H.CRSATT SAVE THE ADJUSTED CLS ARGUMENT AS THE NEW ATTRIBUTE BYTE
LDA #SPACE
LBSR SF772 PUT THE HI-RES TEXT SCREEN INTO LOGICAL BLOCK 1
LDX #HRESSCRN POINT X TO THE TOP OF THE HI-RES TEXT SCREEN
STX >H.CRSLOC PUT THE CURSOR AT THE TOP OF THE SCREEN
BSR SF69B CLEAR THE SCREEN
SF6DC LBSR SF778 REMOVE THE HI-RES TEXT SCREEN FROM THE LOGICAL ADDRESS SPACE
RTS
SF6E0 LBSR SF772 PUT THE HI-RES TEXT SCREEN INTO LOGICAL BLOCK 1
BSR SF68C CLEAR THE HI-RES TEXT SCREEN
BRA SF6DC PUT BLOCK 7.1 BACK INTO LOGICAL BLOCK 1
SF6E7 CLR >H.CRSATT RESET THE ATTRIBUTE BYTE TO ZERO
LDA IM.PALET GET THE COLOR IN PALETTE REGISTER 0
STA V.BORDER AND SAVE IT AS THE NEW BORDER COLOR
BSR SF766 ALSO SAVE IT IN THE 40 AND 80 COLUMN VIDEO REGISTER IMAGES
CMPB #100 CHECK FOR CLS 100
SF6F4 BEQ SF730 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.
BSR SF772 PUT THE HI-RES TEXT SCREEN INTO LOGICAL BLOCK 1
BSR SF68C CLEAR THE HI-RES TEXT SCREEN
BSR SF778 PUT BLOCK 7.1 BACK INTO LOGICAL BLOCK 1
LDX #MICROMS-1 POINT TO MICROWARE'S COMMERCIAL MESSAGE
JMP STRINOUT COPY A STRING TO CONSOLE OUT ($B99C)
* MICROWARE COMMERCIAL
MICROMS FCC 'Microware Systems Corp.'
FCB $0D,$00
* NAMES OF THE AUTHORS
* THE INITIALIZATION CODE WILL COPY THE AUTHOR'S NAMES INTO THIS SPOT
AUTHORMS FCB $00,$00,$00,$00,$00,$00
FCB $00,$00,$00,$00,$00,$00
FCB $00,$00,$00,$00,$00,$00
FCB $00,$00,$00
==== THE THREE MUGATEERS ====
If you hold CTRL and ALT while powering on the Color Computer 3, the following bitmap is shown: \\
{{:tandy_color_computer:coco3easteregg.png?direct&600|}}
The F1 key is also checked for during the code which copies Super Extended BASIC from ROM to RAM (between SC137 and SC165) which then calls this display routine:
* THIS IS THE CODE WHICH DISPLAYS THE HIGH RESOLUTION PICTURE OF THE
* AUTHORS OF SUPER EXTENDED BASIC
SC1F0 CLRA
STA >INT.FLAG SET THE INTERRUPT FLAG TO NOT VALID (NOT INITIALIZED)
STA RSTFLG FORCE THE ROMS TO BE COPIED INTO RAM
STA SAMREG+30 ENABLE THE ROMS
LDB #$09
STB PALETREG+10
LDB #63 WHITE (COMPOSITE AND RGB)
STB PALETREG+11
LDX #AUTHPIC POINT X TO THE AUTHORS' PICTURE DATA
LDY #$0E00 DESTINATION OF THE AUTHORS' PICTURE DATA
SC20A LDD ,X++
LDU ,X++ GET FOUR BYTES OF PICTURE DATA
STD ,Y++
STU ,Y++ PUT THE DATA ON THE HI-RES SCREEN
CMPX #SDC05 AT THE END OF THE PICTURE DATA?
BCS SC20A NO
LDA #$F9 256x192 GREEN/BUFF COCO 2 HI-RES GRAPHICS MODE
STA PIA1+2 PROGRAM THE GRAPHICS MODE INTO THE PIA AND THE GIME CHIP
CLRA
LDX #SAMREG POINT X TO THE SAM REGISTERS
STA ,X
STA $03,X
STA $05,X PROGRAM THE SAM REGISTERS FOR HI-RES MODE
STA $07,X
STA $09,X
STA $0B,X SET THE VIDEO DISPLAY PAGE TO $E00
WAITLOOP BRA WAITLOOP ENDLESS WAIT LOOP
==== OS9 ====
Under OS9, pressing CTRL-A (recall last command line entered) upon a fresh boot into the system, will provide with the string of names: \\
K. Kaplan, L. Crane, R. Doggett
Easter egg applies also for stock OS9 Level 1.
From Bill Nobel: ... The one thing not mentioned in the Wiki, is that it originally was "by K. Kaplan, L. Crane, R. Doggett", Curtis, Wes & I changed it to "Bill Nobel, Curtis Boyle & Wes Gale" when we created Nitros 9. Now in v3.3.0 it reads "www.nitros9.org"
===== RTS =====
Return to [[:Tandy Color Computer:]]