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: 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
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:
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