THE BUGS AND THEIR FIXES THE COCO 3 HAS UNFORTUNATELY ANNOYANCES IN THE WAY IT HANDLES THINGS ALONG WITH OUTRIGHT BUGS THAT WILL CRASH YOUR MACHINE. HERE IS A LIST OF THE KNOWN ONES SO FAR AND A FIX TO SOME OF THEM. THE HPRINT BUG AS IT IS THE HPRINT COMMAND CAN ONLY DRAW A MAXIMUM OF ONE LINE WIDTH. IT WON'T DO A WRAP AROUND TO THE NEXT LINE AS A TEXT SCREEN WOULD .SO THE LINE WIDTH IS LIMITED TO 40 COLUMN IN HSCREEN 1 AND 2 AND 80 COLUMN IN THE OTHERS BUT IF YOU START PRINTING IN THE MIDDLE OF A LINE IT STOPS AT THE END OF THE LINE. A PROBLEM OCCURS HOWEVER IF THE STRING HAPPENS TO BE LONGER THEN THEN 128 CHARACTERS. THEN, THE STRING HPRINTED WILL NOT BE THE ONE YOU JUST TOLD IT TO BUT THE ONE SPECIFIED IN THE PREVIOUS HPRINT. WORST YET, EACH CODE IN THAT STRING WILL BE DECREASED BY 20 !! TO MAKE THIS CLEARER. SAY YOU HPRINT(0,0), STRING$(20,65), THIS WILL PRINT A LINE OF 'A' AT THE TOP OF THE SCREEN. NOW DO HPRINT(0,1),STRING$(129,66), THIS SHOULD PRINT A LINE OF 'B' BUT WILL PRODUCE A PART LINE OF '!'. ON TOP OF THAT, AT ANY POINT A LINE THAT WAS LONGER THEN THE LAST ONE PRINTED WAS DONE, PART OF THAT STRING WILL APPEAR TOO. BEING ABLE TO 'WRAP-AROUND' TO THE NEXT LINE WOULD REQUIRE QUITE A REWRITE THAT MAY FRANKLY NOT BE WORTH IT. FIXING THAT BUG HOWEVER CAN BE DONE BY PATCHING THE CODE WITH THE FOLLOWING CODE ORG $EF45 JSR $B26A JSR $E7B2 JSR $B267 JSR $B26D JSR $B156 TST $06 BNE TAG1 JSR $BDD9 JSR $B516 TAG1 JSR $B657 TSTB BPL TAG2 LDB #$50 TAG2 LDY #$FE19 STB -1,Y THE ACTUAL PATCH IS THE 3 LINES BEGINNING WITH 'TSTB'; IT CHECKS IF THE STRING LENGTH IS LESS THEN 128, IF NOT IT WILL REDUCE IT TO 80. THE REST IS NEEDED TO MAKE ROOM FOR THIS PATCH. THE LPEEK, LPOKE AND HIGH RES TEXT SCREEN BUG THIS BUG STEMS FROM THE FACT THAT IN ORDER TO ACCESS ONE OF THE SEGMENTS THAT THE 6809 CANNOT ACCESS DIRECTLY ONE MUST PUT THE SEGMENT IT IS IN IN ONE ON THE MMU SLOTS. IF THE STACK HAPPENS TO BE IN THAT SLOT, THE SYSTEM WILL CRASH AT THE NEXT 'RTS'. THE GRAPHIC SCREEN WORK OK BECAUSE A SPECIAL AREA WAS RESERVED FOR THEM DURING THE SWITCHING BUT THE TEXT SCREEN AREA WAS NOT SO PROTECTED. SO, IF THE STACK IS IN THE 2000-3FFF AREA AND YOU ARE IN 40 OR 80 COLUMN MODE THE SYSTEM WILL CRASH. IN THE SAME WAY, IF THE STACK IS LOWER THEN 1FFF THE LPEEK, LPOKE COMMAND WILL CRASH THE SYSTEM BECAUSE THEY USE MMU SLOT 0. I DO NOT HAVE A FIX FOR THE TEXT SCREEN BUG YET, IT WILL REQUIRE A REWRITE OF MOST OF THAT CODE TO ELIMINATE STACK REFERENCES, BUT THE LPEEK & LPOKE BUGS CAN BE FIXED IN THIS WAY LPOKE ORG $E560 ORCC #$50 LDY $FFA0 STB $FFA0 STY $FFA0 LPEEK ORG $E575 CMPB #$3F LBHI $B44A ORCC #$50 LDY #$FFA0 LDA ,Y STB ,Y LDB ,X STA ,Y ANDCC #$AF THIS ELIMINATES ANY STACK REFERENCES WHEN ADDRESS 0000-1FFF GETS SWAPPED OUT THE ENHANCED DOS BUG BECAUSE THIRD PARTY DOS USE EXTRA COMMANDS, THOSE CONFLICT WITH THE NEW ENHANCED BASIC COMMANDS & RESULT IN BOTH THE DOS AND ENHANCED COMMANDS BEING INOPERABLE. TO FIX THIS THE FOLLOWING POKES WILL ALLOW YOU TO SWITCH BETWEEN THE 2 COMMAND SETS. AFTER POWER UP ?PEEK(&H134) TAKE NOTE OF THAT # IT THE # OF COMMANDS YOUR DOS HAS TO ENABLE DOS COMMANDS POKE&H134,# OF COMMANDS IN YOUR DOS POKE&HE193,&HFE (MAKE LOWEST ENHANCED TOKEN FF) POKE&HE140,&H21 (MAKE A BLS INTO A BRN) TO ENABLE ENHANCED COMMANDS POKE&H134,&H14 (REDUCE # OF DOS TOKENS) POKE&HE193,&HE2 (RESTORE THE RIGHT # OF LOWEST ENHANCED TOKEN) POKE&HE140,&H23 (RESTORE A BCC INSTRUCTION) THE LIST BUG IF YOU TRIED TO LIST A PROGRAM CONTAINING DOS COMMANDS IN AN EXTENDED BASIC COCO 2 IT WOULD RETURN '!' FOR THE ILLEGAL TOKENS, BUT THE COCO 3 WILL HANG ON YOU BECAUSE OF A BUG. AND YOU CAN'T EVEN EDIT THE BAD LINE SINCE EDIT USES THAT BUGGED ROUTINE. THE FIX IS AS FOLLOW. ORG $E186 JMP QQP ORG $E18D JSR QQP1 ORG $E316 QQP LDU #$E158 CMPA #$16 EXIT LBHI $B7E0 JMP $E172 QQP1 CMPU #$E170 QQP2 LBEQ $B7E0 CMPU #$E16C BEQ QQP2 CMPA #$4 BRA EXIT NOTE THAT THIS IS NOT A PERFECT FIX AS IT OVERWRITES PART OF THE SIGN ON MESSAGE FOR DOS 2.1. ALSO A LISTING WITH DOS COMMANDS IN IT IN A NON DOS MACHINE WILL RESULT IN A PARTIALLY GARBLED LINE THAT WILL NEED TO BE RETYPED, BUT IT'S BETTER THEN HANGING. THE 'VAL' BUG THIS IS ONE YOU ARE NOT LIKELY TO EVER SEE. IT WAS DISCOVERED (WITH THE EXPLANATION) BY ART FLEXSER IMMEDIATELY AFTER POWER UP IF YOU DEFINE A STRING THAT IS A VALID HEX # (FOR EXAMPLE A$="&H20") THEN DO A 'VAL' OF THAT STRING THE COCO 3 WILL RETURN THE CORRECT VALUE (32). HOWEVER IF YOU GO TO ROM MODE (POKE&HFFDE,0) & DO A VAL AGAIN YOU WILL GET A VALUE (506) WHICH CORRESPOND TO YOUR STRING + 'E' (&H20E). THIS 'E' IS IN FACT THE FIRST BYTE OF 'EX', THE EXTENDED BASIC ID BYTES. THIS IS DUE TO THE FACT THAT TO DO IT'S WORK IT BASIC USES THE BYTE FOLLOWING THE STRING AS TEMPORARY STORAGE THEN RESTORES IT WHEN IT IS FINISHED. IN RAM MODE, THE 'E' GETS CLOBBERED TEMPORARILY BUT IN ROM MODE IT OBVIOUSLY STAYS IN PLACE CAUSING THE BUG. THIS WOULD ALSO BE TRUE IN THE COCO 1 & 2 IF MICROSOFT HAD NOT SET THE TOP OF MEMORY POINTER TO 1 BYTE LESS THEN THE AVAILABLE MEMORY WHICH ENSURED ONE BYTE FREE. IN THE COCO 3 HOWEVER THE TOP MEM IS SET TO 7FFF WHICH IS WHAT CAUSES THE PROBLEM. TO SOLVE THIS SIMPLY DO A CLEAR 200,&H7FFE. NOTE THAT TO DUPLICATE THE BUG IN A COCO 2 YOU CAN DO A POKE40,&HFF:NEW (ON ONE LINE) IF IT MAKES YOU FEEL ANY BETTER, YOU DO GET AN EXTRA BYTE OF FREE RAM ON POWER UP. NEAT LITTLE POKES AND PATCHES ONE ADVANTAGE OF HAVING THE DOS IN RAM IS THAT YOU CAN NOW DO ALL KINDS OF LITTLE MODS TO IT TO SUIT YOUR TASTE. THE FOLLOWING IS A COLLECTION OF THOSE. MONOCHROME IF YOU HAVE A MONOCHROME MONITOR, YOU NOTICED THAT IT LOOKS AWFUL. THIS IS PARTLY DUE TO THE COLOR SET AND PARTLY TO THE COLOR BURST. USING THIS COLOR SET PALETTE 13,0 PALETTE 12,255 WILL HELP. BUT KILLING THE COLOR BURST WILL MAKE IT LOOK MORE PLEASANT. TO DO SO POKE &HE033,PEEK(&HE033) OR &H10 FOR 32 COLUMN POKE &HE03C,PEEK(&HE03C) OR &H10 FOR 40 COLUMN POKE &HE045,PEEK(&HEO45) OR &H10 FOR 80 COLUMN TO REENABLE COLOR JUST DO POKE ADDRESS, PEEK(ADDRESS) AND &HEF WHERE THE ADDRESS IS THE SAME AS BEFORE NOTE THAT THE 32 COLUMN POKE WILL ALSO DISABLE COLOR ON ALL THE PMODE SCREENS. HCLS WHEN YOU SELECT ANY HSCREEN, THE FIRST THING IT DOES IS TO CLEAR IT. IF YOU JUST DREW A LONG DRAWING, THIS CAN BE VERY ANNOYING. THE FIX IS TO POKE &HE6C6, &H21 NOTE THAT YOU CAN STILL DO AN HCLS IF YOU WANT TO BY TYPING HCLS CLS IT ALSO DOES THE SAME THING WHEN YOU SELECT A NEW WIDTH. TO FIX THIS POKE &HF655,&H12:POKE &HF656,&H12:POKE &HF657,&H12 FOR 32 COLUMN POKE &HF670,&H21 FOR 40 AND 80 COLUMN STATUS LINE THIS ONE IS NEAT. IT ADDS 8 LINES TO THE SCAN OF THE TV, RESULTING IN THE ADDITION OF ONE LINE AT THE BOTTOM . THE LINE IS NOT DIRECTLY ACCESSIBLE TO PRINT, MAKING IT SCROLL AND CLS PROTECTED. THE DRAW BACK IS THAT BECAUSE YOU ONLY HAVE 8 LINES, THE LOWERCASES WITH DESCENDERS (j,q ... ETC) GET CHOPPED AT THE BOTTOM. ALSO THIS WILL NOT WORK ON A 32 COLUMN SCREEN. THE LOCATE ALSO CAUSES AN UNWANTED SCROLL UP OF ONE LINE FOR EACH CHARACTER HPRINTED. THAT COULD BE FIXED BUT YOU WOULD LOOSE THE SCROLL PROTECTION. POKE &HE03D,PEEK(&HE03D) OR &H20 FOR 40 COLUMN POKE &HE046,PEEK(&HE046) OR &H20 FOR 80 COLUMN POKE &HF8F4,&H19 ENABLE THE LOCATE COMMAND TO GO TO LINE 25 TO PRINT ON THE STATUS LINE USE THIS. A$="STATUS LINE " FOR A=1 TO LEN(A$):LOCATE(25,A):PRINT MID$(A$,A,1);:NEXT BORDER COLOR AND TRUE LOWERCASE THE BORDER COLOR CAN BE CHANGED TO MATCH THE ONE OF THE SCREEN (EXCEPT FOR 32 COLUMN WHERE IT CAN ONLY BE BLACK OR GREEN) AS FOLLOWS POKE &HE03E,PALETTE COLOR FOR 40 COLUMN POKE &HE047,PALETTE COLOR FOR 40 COLUMN FOR THE 32 COLUMN IT GETS MORE COMPLICATED. YOU NEED TO PATCH BASIC TO DO IT. THAT SAME PATCH ALSO ALLOWS YOU TO HAVE TRUE LOWERCASE AND REVERSE VIDEO. ORG $95AE LDA #$10 LDB #$0A BSR $95FD LDA $FF22 ANDA #$7 ORA #VALUE STA $FF22 PULS X,D,PC ORG $9600 LSRA 'VALUE' IS CHANGED ACCORDING TO WHAT YOU WANT TO DO AS FOLLOWS VALUE EFFECT 8 ALTERNATE COLOR SET (RED SCREEN) 16 TRUE LOWERCASE 32 REVERSE VIDEO 64 REVERSE BORER NOTE THAT ONE COMBINATION IS INVALID. IF YOU REVERSE THE VIDEO, THE BORDER GETS REVERSED AS WELL. IF YOU INSIST ON HAVING A GREEN BORDER WITH A BLACK SCREEN, USE THE PALETTE COMMAND TO REVERSE THE GREEN AND BLACK ON THE SCREEN THEN DO THE REVERSE VIDEO POKE. THIS PATCH WILL ALSO WORK IN THE COCO 1 OR 2 IN RAM MODE ONLY . WELL, THAT ABOUT COVERS IT. IF YOU HAVE INTERESTING POKES OR DETECT SOME BUGS, PLEASE LET ME KNOW. IN THE MEAN TIME, ENJOY THESE. (C) 1986 ROGER BOUCHARD 72746,3210 YOU MAY REPRODUCE THE MATERIAL IN THIS FILE AS LONG AS IT IS NOT FOR PROFIT & THAT THE SOURCE (COMPUSERVE) AND AUTHOR (ME) ARE MENTIONED.